En Linux, ¿cómo puedo encontrar todos los archivos y directorios que se pueden escribir (o, en realidad, no se pueden escribir) por un usuario en particular?
Editar: Para aclarar, me refería a un subdirectorio particular, no a todo el sistema. Y sí, eso significa todas las permutaciones y combinaciones de escritura del usuario, grupo y mundo que permitirían a ese usuario escribir. Sé semánticamente lo que implica la pregunta, esperaba que se ejecutara una o pocas líneas para obtener una lista de estos archivos.
Respuestas:
Use el comando 'find' si tiene findutils versión 4.3.0 o superior instalada:
Para todos los archivos del directorio actual que el usuario actual puede escribir:
Para todos los archivos del directorio actual que el usuario actual no puede escribir:
Según la página del manual:
fuente
2>&1 | grep -v "Permission denied"
serfind . -writable 2>&1 | grep -v "Permission denied"
Puede crear un script Perl (
writable.pl
) como este:y luego use este script, como root, de la siguiente manera:
rellenando
USERNAME
yDIRECTORY
según corresponda.fuente
¿Estás seguro de que esa es realmente la pregunta que quieres hacerte?
Decir "Quiero ver todos los archivos en los que X cuenta puede escribir" significa cada archivo que poseen con u + w, cada archivo que pertenece a cualquier grupo al que pertenecen y que está configurado en g + w, y cada archivo del mundo que se puede escribir (o + w)
No escribible sería aún más difícil. Sería mejor hacer una lista de cada archivo, luego excluir aquellos en los que pueden escribir.
fuente
Para la respuesta de Eddie si arrojas:
Luego recorrerá directorios con espacios en su nombre también.
fuente
Usaré la sintaxis de búsqueda de GNU para el indicador -perm en este ejemplo:
Básicamente, si arroja extensiones extrañas como ACL, tiene 3 opciones: propietario, grupo y "otro" acceso de escritura. Suena como un trabajo para un bucle.
Hay mucho espacio para optimizar esto, pero se lo dejaré a otra persona ... Además, nunca puedo recordar todos los detalles de encontrar y cruzar sistemas de archivos y ese tipo de tonterías. Además, asegúrese de que la salida de los grupos sea la misma que en mi sistema Linux de prueba
Este es un ejemplo aproximado de cómo encontraría los archivos que un usuario puede escribir. Esto se ejecutará como cualquier usuario, pero si lo ejecuta como un usuario que no sea uid0, solo encontrará cosas que están en directorios en los que el usuario que ejecuta el script tiene permisos de lectura y ejecución.
fuente
Este comando debe encontrar todos los directorios de escritura, puede cambiar los permisos como mejor le parezca:
fuente
No estoy seguro de si esta es la mejor manera, pero debería hacer lo que pides:
la llave está, por supuesto, en el
-w
interruptor, que también se puede negarEDITAR: Pensando más en esto, este script imprime lo que el usuario actual puede escribir, obviamente no funcionaría para un usuario determinado.
fuente