chmod
en realidad puede hacer esto por sí mismo; el X
permiso simbólico significa "ejecutar, si tiene sentido", lo que generalmente significa en directorios pero no en archivos. Entonces, puedes usar:
chmod -R u=rwX,go=rX /path/to/htdocs
El único problema potencial es que si alguno de los archivos sin formato ya tiene un conjunto de ejecución, chmod
asume que es intencional y lo mantiene. Si se trata de un problema potencial y tienes la versión GNU de chmod
(es decir, está en Linux), puede hacer que elimine cualquier permiso de ejecución perdido como este:
chmod -R a-x,u=rwX,go=rX /path/to/htdocs
Lamentablemente, este truco no funciona con la versión bsd (/macOS) de chmod
(No estoy seguro acerca de otras versiones). Esto se debe a que la versión bsd aplica el X
permiso basado en "el modo original (sin modificar)", es decir, si tenía bits de ejecución antes el a-x
se realizó la modificación (ver el man
página).
Usa find
para buscar directorios y aplicar chmod en ellos:
find -type d | xargs chmod 775
Utilice el tipo f
para archivo:
find -type f | xargs chmod 775
Usa el -type
de find Opción para limitar acciones a archivos y directorios. Usa el -o
opción para especificar acciones alternativas para diferentes tipos, por lo que solo tiene que ejecutar find
una vez, en lugar de por separado para cada tipo.
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +