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: chmodanaliza 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 chmodaplica la Xinstrucción específica , por lo que puede borrar los bits de ejecución en la misma ejecución con a-x,a=rwXsolo 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 statla salida de, o la primera columna de ls -l. Los bits de ejecución están representados por x. -rwxr-xr-xes 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=rwXestablece 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 chmoduna 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 Xpara +las operaciones).
---, ---, ---un indoe sin un "conjunto de bits"?---------significa que no hay bits establecidos. Puede encontrar esta pregunta útil....,...,...) así como "conjunto de bits de ejecución no válido" (describiría como---,---,---), al comienzo de la respuesta, podría ayudar a hacerlo aún más didáctico y disminuye la posibilidad de que alguien se haya perdido eso; Aquí es donde originalmente me enamoré de esto.chmoddice que "cambia los bits de modo de archivo de cada archivo", etc. En contexto, "ejecutar bit (s)" se refieren a los tres+xpermisos posibles (ugo) . En mi opinión, "sin bits establecidos" suena extraño, ya que no menciona ningún contexto....,...,...que realmente no significa nada, ni "conjunto de bits de ejecución no válido" (¿qué tiene de inválido?).De la
man chmod:(énfasis mío).
Sin embargo, eso no lo aclara mucho. Este artículo tiene las dos reglas que aclaran lo que hace:
Por ejemplo, emitimos el siguiente comando chmod en un directorio:
Usando la X mayúscula, el comando anterior establece el atributo ejecutable de acuerdo con las dos reglas siguientes:
Si el archivo es un directorio, establece el atributo ejecutable para el propietario, el grupo y el mundo, lo que significa que pueden ingresar a este directorio.
Si el archivo es un archivo normal, agregará el atributo ejecutable a sus permisos, si el archivo ya tiene un conjunto de bits de ejecución. Si el archivo no tiene un bit de ejecución establecido, no se agregará ninguno.
Usando la x minúscula sería imposible lograr este resultado con un solo comando.
Esperanza de que clarificar el uso de X .
fuente
Por favor, no pulses esta respuesta. Es justo lo que entendí de la respuesta anterior de Stephen Kitt, que acepté como correcta.
1) Una X mayúscula como en
a=rwXdice: Todos los directorios encontrados obtendrán x y todos los archivos regulares encontrados que tengan al menos 1 bit ejecutable en uno de los tres grupos de permisos, también obtendrán x en los tres grupos.2) El combo de
a-x(que asegura que todos los archivos pierdan el bit de ejecución), y un mensaje posteriora=rwXdice: Obtenga los bits de lectura y escritura en todas partes, y un bit de ejecución solo en los directorios.fuente