Intenta comprender el código de forma correcta previamente a adaptarlo a tu trabajo y si tdeseas aportar algo puedes compartirlo con nosotros.
Solución:
La página de 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 permanente símbolo 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 actual (sin modificar) tienen al menos uno de los bits de ejecución (S_IXUSR, S_IXGRP o S_IXOTH) establecido. Se ignorará si el archivo no es un directorio y ninguno de los bits de ejecución está establecido en los bits de modo de archivo actual.
Este es un indicador de permiso condicional: chmod
mira lo que sea 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 chmod
aplica lo específico X
instrucción, por lo que puede borrar los bits de ejecución en la misma ejecución con a-x,a=rwX
para configurar solo 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 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á establecido (pero el bit de lectura está establecido para todos y el bit de escritura para el propietario). Consulte Descripción de los permisos de UNIX y sus attributes que tiene mucho más detalle.
Así en tu ejemplo, u=rwX
establece los permisos de propietario para leer y escribir en todos los casos, y para directorios y archivos ejecutables, ejecutar; igualmente para el grupo (g=rX
) y otra (o=rX
), leer y ejecutar para directorios y archivos ejecutables.
La intención de este operador es permitir que el usuario dé chmod
una variedad de archivos y directorios, y obtener los permisos de ejecución correctos (suponiendo que ninguno de los archivos tuviera 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 find . -type d -exec chmod 755 +
comandos), e intenta tratar con los ejecutables de una manera sensata.
(Tenga en cuenta que macOS chmod
aparentemente solo apoya X
por +
operaciones.)
Desde el man chmod
:
Las letras rwxXst seleccionan bits de modo de archivo para los usuarios afectados: leer (r), escribir (w), ejecutar (o buscar directorios) (x), ejecutar/buscar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario (X), establezca el ID de usuario o grupo en la ejecución (s), el indicador de eliminación restringida o el bit adhesivo (t).
(é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:
# chmod -R u=rwX,g=rX,o=rX testdir/`
Usando la X mayúscula, el comando anterior establece el ejecutable attribute de acuerdo con las dos reglas siguientes:
-
Si el archivo es un directorio, establece el ejecutable attribute para el propietario, grupo y mundo, lo que significa que pueden ingresar a este directorio.
-
Si el archivo es un archivo normal, agregará el ejecutable attribute a sus permisos, si el archivo ya tiene algún conjunto de bits de ejecución. Si el archivo no tiene un conjunto de bits de ejecución, no se agregará ninguno.
Usando la x minúscula sería imposible lograr este resultado con un solo comando.
Espero que aclare el usar de X.
Sección de Reseñas y Valoraciones
Tienes la opción de secundar nuestra investigación fijando un comentario o dejando una puntuación te estamos eternamente agradecidos.