- ¿Por qué a veces no podemos modificar archivos en Linux?
- ¿Qué son los permisos?
- Veamos un ejemplo real
- ¿Qué permisos se necesitan para eliminar un archivo?
- ¿Qué significan r, w y x en los directorios?
- Permisos en formato numérico
- Comandos útiles para gestionar permisos
En esta lección vamos a hablar de algo que todos vamos a encontrar más temprano que tarde cuando usamos Linux: los permisos de archivos y directorios. Si alguna vez has intentado crear o modificar un archivo y has visto errores como Permission denied ❌, esta lección es para ti.
¿Por qué a veces no podemos modificar archivos en Linux?
Supongamos este caso:
touch /etc/myfile
Al ejecutarlo, tal vez veamos un error como:
touch: cannot touch '/etc/myfile': Permission denied
¿Qué significa este mensaje? Que el usuario con el que estamos trabajando no tiene permiso para crear archivos en ese directorio. Y esto no depende del archivo, sino del sistema de permisos de Linux.
¿Qué son los permisos?
En Linux, cada archivo y directorio tiene permisos que definen quién puede:
- Leer (
r- read) - Escribir (
w- write) - Ejecutar (
x- execute)
Estos permisos están organizados para tres tipos de usuarios:
| Tipo de usuario | ¿Quién es? |
|---|---|
| Usuario (propietario) | Quien creó el archivo o a quien pertenece |
| Grupo | Otros usuarios que están en el mismo grupo |
| Otros (otros usuarios) | Cualquier otro usuario del sistema |
Veamos un ejemplo real
Si ejecutamos el siguiente comando en una terminal:
ls -la
Posiblemente veamos algo como esto:
-rw-r--r-- 1 miguel.m miguel.m 3771 Aug 31 2015 .bashrc
Vamos a descomponer la parte de los permisos (lo más a la izquierda):
| Parte | Significado |
|---|---|
- | Es un archivo (si fuera un directorio veríamos d) |
rw- | El propietario puede leer y escribir |
r-- | El grupo puede solo leer |
r-- | Todos los demás también pueden solo leer |
Es decir, solo "miguel.m", el dueño, puede modificar el archivo. Los demás solo pueden verlo.
¿Qué permisos se necesitan para eliminar un archivo?
Algo que puede parecer raro al principio: para eliminar un archivo, no importa si tienes permisos sobre el archivo — lo que importa son los permisos del directorio que lo contiene.
Por ejemplo, si un archivo está en /home/miguel, debemos revisar los permisos de ese directorio con:
ls -la /home/ | grep miguel
Y puede mostrar algo como:
drwxr-xr-x 5 miguel.m miguel.m 4096 Aug 29 11:34 miguel.m
La primera letra d indica que es un directorio.
Los siguientes permisos se leen así:
rwxpara el propietario: puede leer, escribir y entrar al directorio.r-xpara el grupo y otros: pueden entrar y leer su contenido, pero no modificarlo.
¿Qué significan r, w y x en los directorios?
Aquí hay un detalle importante: estos permisos tienen un significado específico cuando se aplican a directorios.
| Permiso | ¿Qué permite hacer en un directorio? |
|---|---|
r | Ver los nombres de los archivos dentro del directorio |
x | Entrar al directorio y acceder a archivos si se tiene permiso sobre ellos |
w | Crear, borrar o renombrar archivos dentro del directorio |
Entonces, para eliminar un archivo dentro de un directorio, necesitamos tener permiso de escritura (w) en el directorio, no en el archivo que vamos a borrar.
Permisos en formato numérico
Además del formato con letras (rwx), Linux permite usar números para definir permisos. A esto se le llama "modo octal".
Cada permiso tiene un valor binario, que luego se representa como un número decimal:
| Número | Permisos | Binario |
|---|---|---|
| 7 | rwx | 111 |
| 6 | rw- | 110 |
| 5 | r-x | 101 |
| 4 | r-- | 100 |
| 3 | -wx | 011 |
| 2 | -w- | 010 |
| 1 | --x | 001 |
| 0 | --- | 000 |
Por ejemplo:
chmod 755 script.sh
Este comando da permisos rwx al propietario y r-x a grupo y otros.
Comandos útiles para gestionar permisos
Aquí te mostramos dos comandos que vamos a usar mucho para manejar permisos:
Cambiar propietario con chown
Con este comando le cambiamos el dueño a un archivo. Por ejemplo:
chown miguel .bashrc
Ahora, el archivo .bashrc le pertenece al usuario miguel.
Cambiar permisos con chmod
Para modificar los permisos de un archivo o directorio:
chmod +r archivo.txt # Agrega permiso de lectura
chmod -x archivo.sh # Quita permiso de ejecución
chmod 644 archivo.txt # Ajusta permisos usando el modo numérico
Si no tienes permiso para hacer esto, deberás usar sudo o hacerlo como un usuario con más privilegios (como root).
Resumen
- Cada archivo y directorio en Linux tiene permisos de lectura (
r), escritura (w) y ejecución (x). - Estos permisos se asignan al propietario, al grupo y a otros usuarios.
- Eliminar un archivo requiere permiso de escritura en el directorio donde se encuentra, no en el archivo en sí.
- En directorios, el permiso
xpermite entrar;rpermite ver su contenido;wpermite modificar lo que hay dentro. - Los permisos también se pueden expresar numéricamente (por ejemplo, 755).
- Los comandos
chmodychownnos ayudan a cambiar los permisos y propietarios.
Este conocimiento es clave si queremos trabajar con servidores, administrar sistemas Linux o simplemente mantener seguros nuestros archivos. ¡Seguimos aprendiendo!
Materiales adicionales
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.