Estaba haciendo un cambio recursivo masivo de permisos de algunos archivos que había migrado a un sistema Unix. Los cambié a ug + rw, pero luego descubrí que no podía atravesar subdirectorios. Miré la página del manual chmod
y no vi ninguna explicación para excluir directorios, así que busqué en Google un poco y descubrí que la gente solía find
cambiar de forma recursiva los permisos en los directorios para 'ejecutar' para el usuario y el grupo. Lo hice y luego pude verlos.
Pero me pareció que debería poder hacer este hallazgo chmod
: cambiar recursivamente los archivos para leer / escribir, pero no hacer que los directorios sean imposibles de recorrer. ¿He hecho esto de la manera "correcta" o hay una manera más simple de hacerlo?
fuente
find
para establecer todos los permisos de archivo a 600 y todos los permisos de directorio a 700. (Llegué aquí a través de mis google sobre el tema). Si eso se puede hacer con un solochmod -R
comando, no dude en corregirme.chmod -R u=rwX,go= /path
hace casi lo que desea: establece todos los directorios en 700 y todos los archivos en 600 o 700, dependiendo de si el bit de ejecución ya está configurado o no, y creo que esto es lo correcto .find
comando que escribiste fue muy útil como plantilla. :)Usar find es la forma "correcta" y la única forma programática, aunque hay variaciones:
o
o el más lento:
Cada uno de estos selecciona un archivo (no directorio, no enlace simbólico) y aplica el
chmod
comando en él. Los dos primeros reducen el número de llamadaschmod
agregando el archivo al final de una línea de comando interna cada vez hasta que se alcanza un máximo (a menudo 10), luego llama al comando y comienza a reconstruir un nuevo comando. La última declaración genera un nuevo proceso para cada archivo, por lo que es menos eficiente.fuente