En sistemas operativos tipo Unix, el comando chmod establece los permisos de archivos o directorios.
Este documento describe la versión GNU / Linux de chmod.
Descripción
En los sistemas operativos tipo Unix, un conjunto de indicadores asociados con cada archivo determina quién puede acceder a ese archivo y cómo pueden acceder a él. Estas banderas se denominan permisos de archivo o modos, como en "modo de acceso". El nombre del comando chmod significa "modo de cambio". Restringe la forma en que se puede acceder a un archivo.
Para obtener más información sobre los modos de archivo, consulte ¿Qué son los permisos de archivo y cómo funcionan? en nuestra documentación del comando umask. Contiene una descripción completa de cómo definir y especificar permisos de archivo.
En general, los comandos chmod toman la forma:
nombre de archivo de permisos de opciones de chmod
Si no se especifican opciones, chmod modifica los permisos del archivo especificado por el nombre del archivo a los permisos especificados por los permisos.
permisos define los permisos para el propietario del archivo (el "usuario"), los miembros del grupo que posee el archivo (el "grupo") y cualquier otra persona ("otros"). Hay dos formas de representar estos permisos: con símbolos (caracteres alfanuméricos) o con números octales (los dígitos del 0 al 7).
Digamos que usted es el propietario de un archivo llamado myfile y desea establecer sus permisos para que:
- el usuario puede leerlo, escribirlo y ejecutarlo;
- los miembros de su grupo pueden leerlo y ejecutarlo; y
- otros solo pueden leerlo.
Este comando hará el truco:
chmod u = rwx, g = rx, o = r myfile
Este ejemplo utiliza la notación de permisos simbólicos. Las letras u, g y o representan "usuario", "grupo" y "otro". El signo igual ("=") significa "establecer los permisos exactamente así", y las letras "r", "w" y "x" significan "leer", "escribir" y "ejecutar", respectivamente. Las comas separan las diferentes clases de permisos, y no hay espacios entre ellas.
Aquí está el comando equivalente que usa la notación de permisos octales:
chmod 754 myfile
Aquí los dígitos 7, 5 y 4 representan individualmente los permisos para el usuario, el grupo y otros, en ese orden. Cada dígito es una combinación de los números 4, 2, 1 y 0:
- 4 significa "leer",
- 2 significa "escribir",
- 1 significa "ejecutar" y
- 0 significa "sin permiso".
Entonces 7 es la combinación de permisos 4 + 2 + 1 (leer, escribir y ejecutar), 5 es 4 + 0 + 1 (leer, no escribir y ejecutar), y 4 es 4 + 0 + 0 (leer, no escribir y no ejecutar).
Sintaxis
chmod [OPCIÓN] ... MODO [, MODO] ... ARCHIVO ... chmod [OPCIÓN] ... ARCHIVO OCTAL-MODE ... chmod [OPCIÓN] ... - referencia = ARCHIVO RFILE ...
-c, –cambios |
Como –verbose, pero da una salida detallada solo cuando se realiza un cambio. |
-f, – silencioso, –quiet |
Modo silencioso; suprime la mayoría de los mensajes de error. |
-v, –verbose |
Modo detallado; genera un mensaje de diagnóstico para cada archivo procesado. |
–no-preserve-root |
No trate '/' (el directorio raíz) de ninguna manera especial, que es la configuración predeterminada. |
–preserve-root |
No opere recursivamente en '/'. |
– referencia = RFILE |
Establezca permisos para que coincidan con los del archivo RFILE, ignorando cualquier MODO especificado. |
-R, –recursivo |
Cambiar archivos y directorios de forma recursiva. |
–ayuda |
Muestre un mensaje de ayuda y salga. |
–versión |
Salida de información de versión y salida. |
Descripción técnica
chmod cambia el modo de archivo de cada ARCHIVO especificado de acuerdo con MODE, que puede ser una representación simbólica de los cambios a realizar o un número octal que representa el patrón de bits para los nuevos bits de modo.
El formato de un modo simbólico es:
[ugoa …] [[+ – =] [permisos …] …]
donde perms es cero o más letras del conjunto r, w, x, X, syt, o una sola letra del conjunto u, g, y o. Se pueden dar múltiples modos simbólicos, separados por comas.
Una combinación de las letras u, g, oy controla qué acceso de los usuarios al archivo cambiará: el usuario que lo posee (u), otros usuarios en el grupo del archivo (g), otros usuarios que no están en el archivo grupo (o), o todos los usuarios (a). Si no se da ninguno de estos, el efecto es como si se diera un a, pero los bits que se establecen en la máscara de usuario no se ven afectados.
El operador + hace que los bits de modo de archivo seleccionados se agreguen a los bits de modo de archivo existentes de cada archivo; – hace que se eliminen; y = hace que se agreguen y hace que se eliminen bits no mencionados, excepto que los bits de ID de grupo y usuario de grupo no mencionados no se ven afectados.
Las letras r, w, x, X, syt seleccionan bits de modo de archivo para los usuarios afectados: leer (r), escribir (w), ejecutar (x), ejecutar solo si el archivo es un directorio o ya tiene permiso de ejecución para algunos usuarios (X), establezca la identificación de usuario o grupo en ejecuciones, bandera de eliminación restringida o bit fijo (t). Para los directorios, las opciones de ejecución X y X definen el permiso para ver el contenido del directorio.
En lugar de una o más de estas letras, puede especificar exactamente una de las letras u, g u o: los permisos otorgados al usuario propietario del archivo (u), los permisos otorgados a otros usuarios que son miembros del archivo grupo (g), y los permisos otorgados a los usuarios que no están en ninguna de las dos categorías anteriores (o).
Un modo numérico es de uno a cuatro dígitos octales (0-7), derivado al sumar los bits con los valores 4, 2 y 1. Se supone que los dígitos omitidos son ceros iniciales. El primer dígito selecciona el ID de usuario establecido (4) y el ID de grupo establecido (2) y la eliminación restringida o los atributos fijos (1). El segundo dígito selecciona permisos para el usuario propietario de la lectura (4), escritura (2) y ejecución (1); el tercero selecciona permisos para otros usuarios en el grupo del archivo, con los mismos valores; y el cuarto para otros usuarios que no están en el grupo del archivo, con los mismos valores.
chmod nunca cambia los permisos de los enlaces simbólicos; la llamada al sistema chmod no puede cambiar sus permisos. Sin embargo, esto no es un problema ya que los permisos de los enlaces simbólicos nunca se utilizan. Sin embargo, para cada enlace simbólico listado en la línea de comando, chmod cambia los permisos del archivo señalado. Por el contrario, chmod ignora los enlaces simbólicos encontrados durante los recorridos recursivos del directorio.
Bits setuid y setgid
chmod borra el bit set-group-ID de un archivo normal si la ID de grupo del archivo no coincide con la ID de grupo efectiva del usuario o una de las ID de grupo suplementarias del usuario, a menos que el usuario tenga los privilegios apropiados. Restricciones adicionales pueden hacer que se ignoren los bits set-user-ID y set-group-ID de MODE o RFILE. Este comportamiento depende de la política y la funcionalidad de la llamada al sistema chmod subyacente. En caso de duda, verifique el comportamiento subyacente del sistema.
chmod conserva los bits set-user-ID y set-group-ID de un directorio a menos que especifique explícitamente lo contrario. Puede establecer o borrar los bits con modos simbólicos como u + sy gs, y puede establecer (pero no borrar) los bits con un modo numérico.
Indicador de eliminación restringida (o "Sticky Bit")
El indicador de eliminación restringida o bit fijo es un bit único, cuya interpretación depende del tipo de archivo. Para los directorios, evita que los usuarios no privilegiados eliminen o cambien el nombre de un archivo en el directorio a menos que sean dueños del archivo o del directorio; Esto se llama la marca de eliminación restringida para el directorio, y se encuentra comúnmente en directorios de escritura mundial como / tmp. Para archivos regulares en algunos sistemas más antiguos, el bit guarda la imagen de texto del programa en el dispositivo de intercambio para que se cargue más rápidamente cuando se ejecuta; esto se llama la parte adhesiva.
Ver permisos de archivos
Una forma rápida y fácil de enumerar los permisos de un archivo es con la opción de listado largo (-l) del comando ls. Por ejemplo, para ver los permisos de file.txt, puede usar el comando:
ls -l archivo.txt
… que muestra una salida similar a la siguiente:
-rwxrw-r-- 1 hope hopestaff 123 feb 03 15:36 file.txt
Esto es lo que significa cada parte de esta información:
– |
El primer carácter representa el tipo de archivo: "-" para un archivo normal, "d" para un directorio, "l" para un enlace simbólico. |
rwx |
Los siguientes tres caracteres representan los permisos para el propietario del archivo: en este caso, el propietario puede leer, escribir o ejecutar el archivo. |
rw- |
Los siguientes tres caracteres representan los permisos para los miembros del grupo de archivos. En este caso, cualquier miembro del grupo propietario del archivo puede leer o escribir en el archivo. El guión final es un marcador de posición; los miembros del grupo no tienen permiso para ejecutar este archivo. |
r– |
Los permisos para "otros" (todos los demás). Otros solo pueden leer este archivo. |
1 |
El número de enlaces duros a este archivo. |
esperanza |
El dueño del archivo. |
personal de esperanza |
El grupo al que pertenece el archivo. |
123 |
El tamaño del archivo en bloques. |
Febrero 03 15: 36 |
El tiempo m del archivo (fecha y hora de la última modificación del archivo). |
file.txt |
El nombre del archivo. |
Ejemplos
chmod 644 file.htm
Establezca los permisos de file.htm en "el propietario puede leer y escribir; el grupo solo puede leer; los demás solo pueden leer".
chmod -R 755 myfiles
Recursivamente (-R) Cambia los permisos del directorio myfiles, y todas las carpetas y archivos que contiene, al modo 755: el usuario puede leer, escribir y ejecutar; Los miembros del grupo y otros usuarios pueden leer y ejecutar, pero no pueden escribir.
chmod u = rw ejemplo.jpg
Cambie los permisos para el propietario de example.jpg para que el propietario pueda leer y escribir el archivo. No cambie los permisos para el grupo o para otros.
chmod u + s comphope.txt
Establezca el bit "Set-User-ID" de comphope.txt, para que cualquier persona que intente acceder a ese archivo lo haga como si fuera el propietario del archivo.
chmod us comphope.txt
Lo contrario del comando anterior; anula la configuración del bit SUID.
chmod 755 file.cgi
Establezca los permisos de file.cgi para "leer, escribir y ejecutar por el propietario" y "leer y ejecutar por el grupo y todos los demás".
chmod 666 file.txt
Establezca el permiso de file.txt para "leer y escribir por todos".
chmod a = rw archivo.txt
Logra lo mismo que el comando anterior, usando notación simbólica.
Comandos relacionados
chown: cambia la propiedad de los archivos o directorios. getfacl: muestra el control de acceso a archivos lists.ls: muestra el contenido de un directorio o directorios.