Comando Linux chmod
Referencia completa de comandos Linux
El comando Linux chmod (en inglés: change mode) es un comando que controla los permisos de los usuarios sobre los archivos.
chmod (change mode) es un comando en el sistema Linux que se utiliza para cambiar los permisos de archivos o directorios; controla los permisos de acceso del propietario del archivo, del grupo y de otros usuarios sobre el archivo.
Solo el propietario del archivo y el superusuario pueden modificar los permisos de un archivo o directorio.
Los permisos de acceso a archivos en Linux/Unix se dividen en tres niveles: propietario del archivo (Owner), grupo de usuarios (Group) y otros usuarios (Other Users).

Se pueden especificar los permisos de un archivo utilizando el modo absoluto (modo numérico octal) o el modo simbólico.

Usuarios: todos los usuarios
Sintaxis
chmod [选项] 权限模式 文件... chmod [选项] --reference=参考文件 文件...
Opciones comunes
- -c: Muestra la acción de cambio solo si los permisos del archivo realmente han cambiado.
- -f: No muestra mensajes de error si los permisos del archivo no se pueden cambiar.
- -v: Muestra información detallada de los cambios de permisos.
- -R: Aplica el mismo cambio de permisos a todos los archivos y subdirectorios del directorio actual (es decir, los cambia uno a uno de forma recursiva).
- --help: Muestra la ayuda.
- --version: Muestra la versión.
mode: Cadena de configuración de permisos, con el siguiente formato:
Modos de permiso
1. Modo simbólico (permisos ugoa+/-)
[ugoa...][[+-=][rwxX]...][,...]
Donde:
- u indica el propietario del archivo, g indica los que pertenecen al mismo grupo (group) que el propietario del archivo, o indica las demás personas, y a indica los tres a la vez.
- + significa añadir permisos, - significa eliminar permisos, = significa establecer los permisos de forma exclusiva.
- r significa lectura, w significa escritura, x significa ejecución, X significa que solo se aplica cuando el archivo es un directorio o cuando el archivo ya ha sido establecido como ejecutable.
Con el modo simbólico se pueden configurar varios elementos: who (tipo de usuario), operator (operador) y permission (permiso). La configuración de cada elemento puede separarse con comas.
El comando chmod modificará los permisos de acceso al archivo para los tipos de usuario especificados por who. El tipo de usuario se indica con una o más letras en la posición de who, como se muestra en la tabla de modos simbólicos de who:
| who | Tipo de usuario | Descripción |
|---|---|---|
| u | user | Propietario del archivo |
| g | group | Grupo al que pertenece el propietario del archivo |
| o | others | Todos los demás usuarios |
| a | all | Todos los usuarios, equivalente augo |
Tabla de modos simbólicos de operator:
| Operator | Descripción |
|---|---|
| + | Añade permisos al tipo de usuario especificado |
| - | Elimina permisos del tipo de usuario especificado |
| = | Establece los permisos del usuario especificado; es decir, redefine todos los permisos del tipo de usuario. |
Tipos de permiso:
| Modo | Nombre | Descripción |
|---|---|---|
| r | Leer | Establece el permiso de lectura |
| w | Escribir | Establece el permiso de escritura |
| x | Permiso de ejecución | Establece el permiso de ejecución |
| X | Permiso de ejecución especial | Solo cuando el archivo es un directorio, o cuando otros tipos de usuarios tienen permiso de ejecución, se establece el permiso de ejecución del archivo. |
| s | setuid/gid | Cuando el archivo se ejecuta, establece los permisos setuid o setgid del archivo según el tipo de usuario especificado por el parámetro who. |
| t | Sticky bit | Establece el sticky bit. Solo el superusuario puede establecer este bit, y solo el propietario del archivo u puede usar este bit. |
2. Sintaxis octal
El comando chmod puede utilizar números octales para especificar permisos.
| Número | Permiso |
|---|---|
| 4 | Lectura (r) |
| 2 | Escritura (w) |
| 1 | Ejecución (x) |
Combinación:
- Permisos del propietario (primer dígito)
- Permisos del grupo (segundo dígito)
- Permisos de otros usuarios (tercer dígito)
Combinaciones comunes:
- 755:
rwxr-xr-x - 644:
rw-r--r-- - 700:
rwx------
Los bits de permiso de un archivo o directorio están controlados por 9 bits de permiso, agrupados de tres en tres. Estos son: lectura, escritura y ejecución del propietario del archivo (User), lectura, escritura y ejecución del grupo (Group), y lectura, escritura y ejecución de otros usuarios (Other).
| # | Permiso | rwx | Binario |
|---|---|---|---|
| 7 | Lectura + escritura + ejecución | rwx | 111 |
| 6 | Lectura + escritura | rw- | 110 |
| 5 | Lectura + ejecución | r-x | 101 |
| 4 | Solo lectura | r-- | 100 |
| 3 | Escritura + ejecución | -wx | 011 |
| 2 | Solo escritura | -w- | 010 |
| 1 | Solo ejecución | --x | 001 |
| 0 | Ninguno | --- | 000 |
Por ejemplo, 765 se interpretaría así:
- Los permisos del propietario se expresan en números: la suma de los números de los tres bits de permiso del propietario. Por ejemplo, rwx, es decir 4+2+1, sería 7.
- Los permisos del grupo se expresan en números: la suma de los números de los bits de permiso del grupo. Por ejemplo, rw-, es decir 4+2+0, sería 6.
- Los permisos de otros usuarios se expresan en números: la suma de los números de los bits de permiso de otros usuarios. Por ejemplo, r-x, es decir 4+0+1, sería 5.
Ejemplos
Establecer el archivo file1.txt para que todos puedan leerlo:
chmod ugo+r file1.txt
Establecer el archivo file1.txt para que todos puedan leerlo:
chmod a+r file1.txt
Establecer los archivos file1.txt y file2.txt para que el propietario y los miembros del mismo grupo puedan escribirlos, pero los demás no puedan escribirlos:
chmod ug+w,o-w file1.txt file2.txt
Añadir permiso de ejecución para el propietario del archivo ex1.py:
chmod u+x ex1.py
Establecer todos los archivos y subdirectorios del directorio actual para que cualquier persona pueda leerlos:
chmod -R a+r *
Además, chmod también puede usar números para representar los permisos, por ejemplo:
chmod 777 file
La sintaxis es:
chmod abc file
Donde a, b y c son cada uno un dígito, que representan respectivamente los permisos de User, Group y Other.
r=4,w=2,x=1
- Para el atributo rwx, entonces 4+2+1=7;
- Para el atributo rw-, entonces 4+2=6;
- Para el atributo r-x, entonces 4+1=5.
chmod a=rwx file
y
chmod 777 file
El efecto es el mismo
chmod ug=rwx,o=x file
y
chmod 771 file
El efecto es el mismo
Si se usachmod 4755 filenamePuede hacer que este programa tenga permisos de root.
Más explicaciones
| Comando | Descripción |
|---|---|
| chmod a+r file | Añadir permiso de lectura a todos los usuarios de file. |
| chmod a-x file | Eliminar el permiso de ejecución de todos los usuarios de file. |
| chmod a+rw file | Añadir permisos de lectura y escritura para todos los usuarios de file. |
| chmod +rwx file | Añadir permisos de lectura, escritura y ejecución para todos los usuarios de file. |
| chmod u=rw,go= file | Establecer permisos de lectura y escritura para el propietario de file, y eliminar todos los permisos del grupo y de otros usuarios sobre file (el espacio significa sin permiso). |
| chmod -R u+r,go-r docs | Para el directorio docs y todos los archivos en su jerarquía de subdirectorios, añadir permiso de lectura al usuario, y eliminar el permiso de lectura para el grupo y otros usuarios. |
| chmod 664 file | Establecer permisos de lectura y escritura para el propietario y el grupo de file, y establecer permiso de lectura para otros usuarios. |
| chmod 0755 file | Equivale au=rwx (4+2+1),go=rx (4+1 & 4+1)。0Sin modo especial. |
| chmod 4755 file | 4Establece el bit de set-user-ID; el resto equivale a u=rwx (4+2+1), go=rx (4+1 y 4+1). |
| find path/ -type d -exec chmod a-x {} \; | Eliminar el permiso de ejecución para todos los usuarios sobre path/ y todos sus directorios (no incluye archivos); se usa '-type f' para hacer coincidir archivos. |
| find path/ -type d -exec chmod a+x {} \; | Permitir a todos los usuarios explorar o pasar a través del directorio path/. |