Este enunciado fue analizado por nuestros especialistas para que tengas la seguridad de la exactitud de nuestro tutorial.
Solución:
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
(superiorX) está documentado tanto en la página del manual tradicional1 y la documentación de información2.
También debería funcionar en otros sistemas similares a Unix, por ejemplo, FreeBSD, NetBSD u OpenBSD. Citando de la página del comando man chmod(1) de The Open Group Base Specifications, número 7, edición de 2018:
los 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. Una funcionalidad similar no es proporcionada por el encontrar utilidad. Versiones históricas de BSD de chmodsin embargo, solo se admite X con op+; se ha ampliado en este volumen de POSIX.1-2017 porque también es útil con op=. (También se ha añadido para op– aunque se duplique Xen este caso, porque es intuitivo y más fácil de explicar.)
1man 1 chmod
2info '(coreutils)Conditional Executability'
Si quieres hacerlo recursivamente, es decira 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 (-tipo 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 ; es obligatorio.
Si conservas alguna desconfianza o capacidad de refinar nuestro enunciado te mencionamos ejecutar una ilustración y con mucho gusto lo observaremos.