Linux : ¿cómo gestionar los permisos con el comando chmod?
Table of Contents
I. Introducción
En este tutorial, aprenderemos a gestionar permisos en Linux, utilizando el comando chmod. Se trata de un comando indispensable que debes conocer y dominar si quieres administrar un servidor o una estación de trabajo en Linux (Ubuntu, Debian, AlmaLinux, etc.).
Los permisos se utilizan para gestionar el acceso a archivos y directorios. El comando chmod se utiliza para modificar estos permisos. Hablaremos sobre el modelo de permisos de Linux, antes de ver cómo utilizar el comando chmod a través de varios ejemplos. El comando chmod puede ser usado para cambiar permisos, ya sea simbólica o numéricamente, así que veremos ambas posibilidades.
Este tutorial se basa en una máquina Debian, pero puede utilizar cualquier otra distribución de Linux.
II. Entender los permisos de Linux
Antes de discutir el uso del comando chmod en sí, creo que es importante recordarle cómo funcionan los permisos en Linux. Aquí, sólo cubriremos lo básico a través de los permisos de lectura, escritura y ejecución.
Cada archivo o directorio tiene tres tipos de permisos:
- Leer (r): ver el contenido de un archivo o listar un directorio.
- Escribir (w): modificar un archivo o su contenido, o añadir/eliminar archivos en un directorio.
- Ejecutar (x): ejecuta un archivo o entra en un directorio (permiso necesario para ejecutar un script Bash, por ejemplo).
Estos permisos se aplican a tres categorías de usuarios:
- Propietario (usuario): el usuario propietario del fichero.
- Grupo: miembros del grupo asociado al fichero.
- Otros: todos los demás usuarios.
A partir de aquí, es posible definir el acceso a los datos, en particular quién puede leer y/o modificar un fichero específico.
III. Visualización e interpretación de los permisos
A. Permisos de lectura en Linux
Para mostrar los permisos de un archivo o directorio, necesitamos utilizar el comando ls. En un Terminal, ejecute el comando "ls -l" para mostrar los permisos de un archivo o directorio. Por ejemplo, para obtener esta información sobre el archivo "/etc/shadow" presente en todas las máquinas Linux, ejecutaremos este comando :
ls -l /etc/shadow
A continuación se muestra un resultado típico de este archivo:
-rw-r----- 1 root shadow 1191 3 janv. 11:14 /etc/shadow
Esta línea muestra los permisos actuales establecidos en este archivo (rw-r-----), así como el nombre del propietario (root) y el nombre del grupo (shadow). He aquí cómo interpretar el resultado de este comando:

B. Permisos: r,w, x
Lo que hay que recordar es que los permisos se definen en una cadena de 9 caracteres dividida en 3 bloques que corresponden a los permisos de propietario, grupo y otros.
- r: permiso de lectura
- w: permiso de escritura (modificación)
- x: permiso de ejecución
- - sin permisos
Los permisos siempre se construyen de esta manera: lectura, escritura, ejecución, es decir, "rwx". Si el permiso es "r--" en un archivo, esto significa que el archivo puede ser leído, pero no modificado (o ejecutado). El mismo permiso en una carpeta significa que se puede visualizar el contenido del directorio, pero el usuario no puede crear, modificar o borrar un archivo o carpeta en ese directorio.
En nuestro caso, por tanto, podemos afirmar que la cuenta "root" tiene permisos de lectura y escritura sobre el archivo "/etc/shadow", mientras que los miembros del grupo "shadow " pueden leer su contenido. Todos los demás usuarios no tienen acceso a este archivo.
C. Permisos especiales: setuid, setgid y sticky bit
Por último, y brevemente, ya que no es el tema principal de este artículo, veremos los permisos especiales. Estos se encuentran en el tercer valor de un grupo de permisos (en lugar de la "x").
Estos bits especiales añaden una funcionalidad extra:
- Setuid : ejecuta un archivo con privilegios de propietario.
- Setgid : los ficheros creados en un directorio heredan el grupo del directorio.
- Sticky bit : impide que los usuarios borren los archivos de un directorio a menos que sean de su propiedad.
Aquí hay un ejemplo donde el "Setuid" se establece en un binario :
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 68248 23 mars 2023 /usr/bin/passwd
Como resultado, el valor "x" se sustituye por "s". Es probable que se encuentre con otros valores: s, S, t, T.
IV. Modificación de permisos con chmod: modo simbólico
A. Chmod: sintaxis en modo simbólico
En modo simbólico, utilizamos el comando chmod especificando los permisos con texto, es decir, para añadir permisos de lectura, podemos especificar "+r". A la inversa, para quitar permisos de escritura, podemos escribir "-w".
La sintaxis general es :
chmod [OPCIONES] [PERMISOS] archivo
chmod [OPCIONES] [ugoa][-+=][rwx...] archivo
El primer conjunto de banderas ([ugoa]) corresponde a los usuarios:
Nombre de la bandera | Correspondencia |
---|---|
u | El propietario-usuario |
g | El grupo (y, por tanto, los usuarios miembros del grupo) |
o | Todos los demás usuarios |
a | Todos los usuarios (equivalente a "ugo") |
Nota : si no se especifica esta bandera en el comando chmod, la bandera por defecto es"a". Sólo los permisos definidos por umask no se ven afectados.
El segundo conjunto de indicadores ([-+=]) corresponde a la operación que debe realizarse sobre los permisos:
Nombre de la bandera | Correspondencia |
---|---|
- | Retirar el permiso especificado |
+ | Añade el permiso especificado |
= | Modifica el permiso actual con el permiso especificado (sobrescribir) |
a | Todos los usuarios (equivalente a "ugo") |
El tercer conjunto de banderas ([rwx]) corresponde al :
Nombre de la bandera | Correspondencia |
---|---|
r | Permiso de lectura |
w | Autorización por escrito |
x | Permiso de ejecución |
s, S, etc... | Permisos especiales |
B. Ejemplos de uso de chmod
Estos son algunos ejemplos de cómo utilizar el comando chmod.
Puedes crear un archivo en blanco en tu máquina para practicar.
cd /tmp
touch fichier.txt
- Dar al grupo permisos de lectura sobre el archivo "fichier.txt ":
chmod g+r fichier.txt

- Elimina el permiso de ejecución para todos los usuarios en el script"script.sh":
chmod a-x script.sh
- Añade permisos de lectura, escritura y ejecución al propietario :
chmod u+rwx script.sh

- Eliminar todos los permisos para otros usuarios :
chmod o= fichier.txt
- Añade derechos de lectura, escritura y ejecución al propietario, derechos de sólo lectura al grupo y ningún derecho a los demás:
chmod u=rwx,g=r,o= fichier.txt
V. Modificación de permisos con chmod: modo numérico
A. Chmod: la sintaxis del modo numérico
Hay otra forma de utilizar el comando chmod: el modo numérico. Aquí, usamos sólo valores numéricos para establecer permisos.
La sintaxis general es :
chmod [OPCIONES] [NUMERO] archivo
En realidad, el número es un valor formado por 3 o 4 dígitos. Cada valor se utiliza para especificar permisos para el usuario, luego el grupo y otros (en el orden habitual).
He aquí una tabla resumen con los tres permisos básicos:
Nombre del permiso | Correspondencia |
---|---|
lectura | 4 |
escribir | 2 |
ejecución | 1 |
no | 0 |
A cada permiso se le asigna un número específico. Dependiendo de los permisos que se definan, puede ser necesario realizar un "cálculo" para sumar el valor correspondiente a cada permiso.
Aquí tienes un ejemplo que te ayudará a entender esta lógica:

Este es un ejemplo de número de 3 dígitos. Si pasa 4 dígitos, el primero puede utilizarse para determinar un permiso especial.
Nombre del permiso especial | Correspondencia |
---|---|
SetUid | 4 |
SetGid | 2 |
StickyBit | 1 |
Sin cambios | 0 |
Esto significa que los valores "0750" y "750" son idénticos cuando se utiliza el comando chmod en modo numérico. Por el contrario, el valor "1777" se utiliza para determinar el sticky bit de un directorio.
Nota : el sticky bit es un atributo aplicado a un directorio que permite restringir el borrado o renombrado de archivos a su propietario, el propietario del directorio, o un administrador. Esto es válido incluso si otros usuarios tienen permisos de escritura en el directorio.
Por último, como regla general, debes evitar utilizar el valor "777", ya que da permisos de lectura, escritura y ejecución a todos los usuarios: es un permiso muy peligroso.
B. Ejemplos de uso de chmod
Ahora veremos algunos ejemplos de cómo utilizar el comando chmod en modo digital.
- Asigna los permisos "rwx" al propietario, "rx" al grupo y "r" a los demás:
chmod 754 archivo.txt
- Establecer permisos "rwx" al propietario de un directorio, de forma recursiva (modificar los permisos del árbol en masa):
chmod -R 700 carpeta/
- Asigna derechos de lectura y escritura al propietario de una carpeta, y acceso de lectura sólo a los miembros del grupo y al resto de usuarios:
chmod 644 carpeta/
VI. Modificación de permisos masivos en Linux
Como extra, vamos a terminar con un ejemplo de cómo cambiar permisos en masa en una máquina Linux. Además de utilizar el comando chmod, también vamos a utilizar el comando find para identificar los archivos en los que queremos trabajar. Esto se puede aplicar a archivos o carpetas.
Aquí, definimos permisos de lectura/escritura para el propietario y permisos de lectura para el grupo y otros, en todos los archivos del directorio "/var/www/application".
# Método numérico
find /var/www/application -type f -exec chmod 644 {} ;
# Método simbólico
find /var/www/application -type f -exec chmod u=rw,go=r {} ;
Para seleccionar directorios en lugar de archivos, sustituya "-type f" por "-type d" en el comando find.
VII. Conclusión
Gracias a este tutorial, deberías ser capaz no sólo de entender mejor cómo funcionan los permisos en Linux, sino también de establecer permisos en un directorio, un archivo o un conjunto de elementos según tus necesidades. Para más información sobre el comando chmod, consulte la página man con "man chmod".