La página del manual dice:
ejecutar / buscar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario ( X
)
POSIX dice:
El símbolo permanente X representará la parte de ejecución / búsqueda de los bits de modo de archivo si el archivo es un directorio o si los bits de modo de archivo actuales (no modificados) tienen al menos uno de los bits de ejecución (S_IXUSR, S_IXGRP o S_IXOTH) establecidos. Se ignorará si el archivo no es un directorio y ninguno de los bits de ejecución se establece en los bits del modo de archivo actual.
Este es un indicador de permiso condicional: chmod
analiza lo que está procesando actualmente, y si es un directorio, o si tiene algún bit de ejecución establecido en sus permisos actuales (propietario, grupo u otro), actúa como si el permiso solicitado fuera x
, de lo contrario lo ignora. La condición se verifica en el momento en que se chmod
aplica la X
instrucción específica , por lo que puede borrar los bits de ejecución en la misma ejecución con a-x,a=rwX
solo establecer el bit ejecutable en los directorios.
Puede ver si un archivo tiene un bit de ejecución establecido mirando la parte de "acceso" de stat
la salida de, o la primera columna de ls -l
. Los bits de ejecución están representados por x
. -rwxr-xr-x
es común para los ejecutables e indica que el bit ejecutable está configurado para el propietario, el grupo y otros usuarios; -rw-r--r--
es común para otros archivos e indica que el bit ejecutable no está configurado (pero el bit de lectura está configurado para todos y el bit de escritura para el propietario). Consulte Comprender los permisos de UNIX y sus atributos, que tiene muchos más detalles.
Por lo tanto, en su ejemplo, u=rwX
establece los permisos de propietario para leer y escribir en todos los casos, y para directorios y archivos ejecutables, ejecutar; del mismo modo para group ( g=rX
) y other ( o=rX
), leer y ejecutar para directorios y archivos ejecutables.
La intención de este operador es permitir al usuario otorgar chmod
una variedad de archivos y directorios, y obtener los permisos de ejecución correctos (suponiendo que ninguno de los archivos tenga un conjunto de bits de ejecución no válido). Evita tener que distinguir entre archivos y directorios (como en el tradicional find . -type f -exec chmod 644 {} +
y los find . -type d -exec chmod 755 {} +
comandos), e intenta manejar los ejecutables de una manera sensata.
(Tenga en cuenta que macOSchmod
aparentemente sólo es compatible X
para +
las operaciones).
---, ---, ---
un indoe sin un "conjunto de bits"?