El comando chmod (abreviatura de change mode) es una de las herramientas más fundamentales en sistemas operativos tipo Unix y Linux. Se utiliza para gestionar quién puede ver, modificar o ejecutar archivos y directorios.
¿Qué es el comando chmod de linux?
chmod es el comando utilizado para cambiar los permisos de acceso de archivos y directorios. En Linux, cada elemento del sistema tiene asignados permisos específicos para tres tipos de usuarios: el propietario, el grupo y otros.
Identificar el archivo y directorio
Si ejecutamos en la terminal ls -l /etc tendremos como ejemplo la siguiente salida
La primera letra indica el tipo de archivo:
┌──── es un archivo
│
-rw-r--r-- 1 root root 3718 Sep 8 13:20 bash.bashrc
-rw-r--r-- 1 root root 367 Aug 5 08:30 bindresvport.blacklist
drwxr-xr-x 2 root root 4096 Sep 25 16:45 binfmt.d
-rw-r--r-- 1 root root 111 Jan 15 15:49 boto.cfg
drwxr-xr-x 3 root root 4096 Jan 14 11:02 ca-certificates
-rw-r--r-- 1 root root 6422 Jan 14 11:02 ca-certificates.conf
drwxr-xr-x 4 root root 4096 Jan 15 15:49 chrony
│
└──── es un directorio
d→ directorio-→ archivo normal
(Existen otros tipos, pero estos dos son los fundamentales por ahora).
Linux diferencia directorios y archivos porque cumplen roles distintos en el sistema, no solo por ejecución.
- Archivos: contienen datos o código
- pueden leerse, escribirse y algunos ejecutarse
- Directorios: contienen referencias a otros archivos
- organizan el sistema y controlan el acceso a lo que hay dentro
Tipos de permisos en archivos
Existen tres acciones básicas que se pueden realizar sobre un archivo:
- Read (r): Permiso de lectura (ver el contenido).
- Write (w): Permiso de escritura (modificar el contenido).
- Execute (x): Permiso de ejecución (correr un programa o entrar en un directorio).
Los tres niveles de usuario
- User (u): El dueño del archivo.
- Group (g): Usuarios que pertenecen al grupo del archivo.
- Others (o): Todos los demás usuarios del sistema.
Salida tipica
-rw-r--r-- 1 oscar oscar 0 script.sh
Su interpretación
- rw- r-- r--
| | |
| | └── otros: solo lectura
| └────── grupo: solo lectura
└────────── usuario: lectura y escritura
Nota: Permiso x en un archivo significa que se puede ejecutar
Tipos de permisos en directorios
En directorios:
- r → listar su contenido (ls)
- w → crear/eliminar archivos dentro
- x → entrar al directorio (cd)
Nota: Permiso x en un directorio significa que puede entrar y acceder a su contenido
Formas de usar
Existen dos métodos principales para asignar permisos: el modo simbólico y el modo octal (numérico).
Modo Octal (Números)
Es el más rápido si conoces los valores. Cada permiso tiene un número asignado:
- Read (r) = 4
- Write (w) = 2
- Execute (x) = 1
- Sin permisos = 0
Para dar permisos, simplemente sumas
| Valor | Permiso | Descripción |
| 7 | rwx | Lectura, escritura y ejecución (4+2+1) |
| 6 | rw- | Lectura y escritura (4+2) |
| 5 | r-x | Lectura y ejecución (4+1) |
| 4 | r-- | Solo lectura (4) |
| 0 | --- | Sin permisos |
Ahora, para usarlo se debe hacer de la siguiente forma:
chmod 644 archivo.txt
|||
||└── otros
|└─── grupo
└──── usuario
Modo Simbólico (Letras)
Usa letras y operadores (+, -, =) para añadir o quitar permisos.
u+x: Añade permiso de ejecución al usuario.g-w: Quita permiso de escritura al grupo.o=r: Define que "otros" solo tengan permiso de lectura.
Ejemplo practico
Crear directorio de prueba
Vamos a crear un directorio y archivo de pruebas:
mkdir chmod_demo
cd chmod_demo
touch script.sh
Verificamos los permisos iniciales
ls -l
Respuesta
-rw-r--r-- 1 oscardevops oscardevops 0 Jan 15 18:45 script.sh
Donde:
- usuario: lectura y escritura
- grupo: solo lectura
- otros: solo lectura
- El archivo no se ejecuta
Usando chmod con notación simbólica
1️⃣ Vamos a darle permisos al al archivo para que pueda ejecutarse
chmod u+x script.sh
Verificamos
ls -l
Respuesta
-rwxrw-r-- 1 oscardevops oscardevops 0 Jan 15 18:52 script.sh
Podemos ver que en el nivel de usuario aparece como -rwx, significa que el archivo ya tiene los permisos y el usuario puede ejecutarlo.
2️⃣ Como prueba, vamos a quitar los permisos de lectura del nivel de otros
chmod o-r script.sh
Resultado usando ls -l
-rwxrw---- 1 oscardevops oscardevops 0 Jan 15 18:52 script.sh
3️⃣ Por ultimo para finalizar con las pruebas de notación simbólica, daremos al nivel de grupo el permiso de ejecución
chmod g+rx script.sh
Resultado usando ls -l
-rwxrwx--- 1 oscardevops oscardevops 0 Jan 15 18:52 script.sh
Usando chmod con notación numérica (octal)
1️⃣ Vamos a dar los siguientes permisos
- usuario → rwx (7)
- grupo → r-x (5)
- otros → r-x (5)
Ejecutamos
chmod 755 script.sh
Resultado usando ls -l
-rwxr-xr-x 1 oscardevops oscardevops 0 Jan 15 18:52 script.sh
2️⃣ Ahora, ejecutamos el siguiente comando para quitar permisos
chmod 600 script.sh
Resultado usando ls -l
-rw------- 1 oscardevops oscardevops 0 Jan 15 18:52 script.sh
Solo el usuario puede leer y escribir.
Caso práctico real: script ejecutable
1️⃣ Añadimos contenido al archivo script.sh para realizar la siguiente practica:
echo -e '#!/bin/bash\necho "Hola mundo"' > script.sh
Vemos los permisos que tiene el archivo con ls -al
-rw------- 1 oscardevops oscardevops 30 Jan 16 13:38 script.sh
2️⃣ Ahora, procedemos a ejecutar el archivo.
./script.sh
Retorna el siguiente mensaje
-bash: ./script.sh: Permission denied
3️⃣ Añadimos el permiso para poder ejecutar el script
chmod +x script.sh
Volvemos a ver los permisos que tiene el archivo
-rwx--x--x 1 oscardevops oscardevops 30 Jan 16 13:38 script.sh
Ejecutamos de nuevo el archivo con ./script.sh
Como respuesta podemos ver Hola mundo
Resumen mental rápido
chmod u+x archivo→ añade ejecución al usuariochmod g-w archivo→ quita escritura al grupochmod o+r archivo→ añade lectura a otroschmod 755 archivo→ permisos exactoschmod +x archivo→ hace ejecutablechmod -R→ recursivo
Preguntas frecuentes
¿Qué significa chmod 755?
chmod 755 asigna lectura, escritura y ejecución al usuario, y lectura y ejecución al grupo y a otros. Es común para scripts y programas ejecutables en Linux.
¿Cuál es la diferencia entre chmod simbólico y numérico?
- Simbólico (chmod u+x archivo): modifica permisos específicos.
- Numérico (chmod 755 archivo): establece permisos exactos de una sola vez.
El simbólico es más descriptivo; el numérico es más rápido y preciso.
¿Por qué no puedo ejecutar un script en Linux?
Generalmente porque el archivo no tiene permiso de ejecución (x) o no incluye un shebang válido. Se soluciona con:
chmod +x script.sh