Para otorgar permiso de ejecución (búsqueda) a directorios, pero no a archivos, use:
chmod -R +X .
Para asignar todos los permisos como en su ejemplo, use:
chmod -R u=rwX,g=rX,o= .
-R
cambia archivos y directorios recursivamente, mientras que +X
establece ejecutar/buscar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario. r
y w
son, por supuesto, para leer y escribir, respectivamente.
Modo X
(superior x ) está documentado tanto en la página del manual tradicional como en la documentación de información.
También debería funcionar en otros sistemas similares a Unix, p. FreeBSD, NetBSD o OpenBSD. Cita de la página del comando man chmod(1) de The Open Group Base Specifications, número 7, edición de 2018:
La X El símbolo permanente se adoptó de los sistemas basados en BSD porque proporciona la funcionalidad comúnmente deseada cuando se hace recursivamente (-R opción) modificaciones. find no proporciona una funcionalidad similar utilidad. Versiones BSD históricas de chmod , sin embargo, solo admitía X con op +; se ha ampliado en este volumen de POSIX.1-2017 porque también es útil con op =. (También se ha agregado para op - aunque duplique x , en este caso, porque es intuitivo y más fácil de explicar.)
man 1 chmod
info '(coreutils)Conditional Executability'
Si desea hacerlo de forma recursiva, es decir, , a directorios dentro de directorios dentro de directorios, el comando a usar es:
find /path/to/starting/directory -type d -exec chmod +x {} \;
Esto ubica todos y solo los subdirectorios (-type d flag) del directorio /path/to/starting/directory, y luego realiza el cambio requerido de permiso de ejecución para cada uno de ellos. El espacio antes de \; es obligatorio.