Los permisos de archivos en Linux controlan quién puede leer, escribir o ejecutar cada archivo del sistema.
Cada archivo y carpeta en Linux tiene reglas que definen qué usuarios pueden hacer con ellos. Estas reglas se llaman permisos. Sin entenderlos, no podrás proteger tus datos ni ejecutar scripts correctamente.
La estructura de los permisos
Cada archivo tiene tres grupos de permisos:
- Usuario (u): el dueño del archivo.
- Grupo (g): un conjunto de usuarios con acceso compartido.
- Otros (o): todos los demás usuarios del sistema.
Cada grupo puede tener tres tipos de permiso:
| Símbolo | Nombre | Significado |
|---|---|---|
r |
read | Puede leer el archivo o listar el directorio |
w |
write | Puede modificar o eliminar el archivo |
x |
execute | Puede ejecutar el archivo o entrar al directorio |
- |
sin permiso | La acción está prohibida |
Cómo leer la notación de permisos
Cuando ejecutas ls -l, Linux muestra una cadena de 10 caracteres al inicio de cada línea. Por ejemplo:
-rwxr-xr--
Esta cadena se divide así:
- | rwx | r-x | r--
↑ ↑ ↑ ↑
│ │ │ └── Otros: solo lectura
│ │ └──────── Grupo: lectura y ejecución
│ └────────────── Usuario: lectura, escritura y ejecución
└─────────────────── Tipo: "-" = archivo, "d" = directorio
El primer carácter indica el tipo de objeto:
-significa archivo regular.dsignifica directorio.lsignifica enlace simbólico.
Ejemplo real con ls -l
Supón que trabajas en el área de TI de una empresa como Liverpool y tienes estos archivos:
ls -l /home/usuario/reportes/
Salida:
-rw-r--r-- 1 ana contabilidad 4096 jun 10 09:00 ventas_junio.csv
-rwxr-x--- 1 ana ti 2048 jun 10 10:00 respaldo.sh
drwxr-xr-x 2 ana contabilidad 4096 jun 10 08:00 historico
Interpretación:
- ventas_junio.csv: La dueña
anapuede leer y escribir. El grupocontabilidady los demás solo pueden leer. - respaldo.sh: La dueña
anapuede leer, escribir y ejecutar. El grupotipuede leer y ejecutar. Los demás no tienen ningún acceso. - historico: Es un directorio. Todos pueden leer y entrar, pero solo
anapuede modificar su contenido.
La notación octal
Linux también representa los permisos con números. Este sistema se llama notación octal.
Cada permiso tiene un valor:
| Permiso | Valor |
|---|---|
r |
4 |
w |
2 |
x |
1 |
- |
0 |
Sumas los valores de cada grupo para obtener un número del 0 al 7:
rwx= 4+2+1 = 7r-x= 4+0+1 = 5r--= 4+0+0 = 4---= 0+0+0 = 0
Entonces, el permiso -rwxr-xr-- equivale a 754 en notación octal.
Cómo cambiar permisos con chmod
chmod (change mode) es el comando para modificar permisos. Puedes usarlo de dos formas.
Forma simbólica
chmod [quién][operador][permiso] archivo
- Quién:
u(usuario),g(grupo),o(otros),a(todos). - Operador:
+agrega,-quita,=establece exactamente. - Permiso:
r,w,x.
Ejemplo 1: Dar permiso de ejecución al dueño de un script:
chmod u+x respaldo.sh
Ejemplo 2: Quitar permiso de escritura al grupo y a otros:
chmod go-w ventas_junio.csv
Ejemplo 3: Dar a todos solo permiso de lectura:
chmod a=r reporte_bimbo.txt
Forma octal
chmod [número] archivo
Ejemplo 4: Establecer permisos rwxr-xr-- (754) en un script:
chmod 754 respaldo.sh
Ejemplo 5: Dar permisos completos al dueño y ninguno a los demás (700):
chmod 700 contrasenas.txt
Este último ejemplo es útil cuando guardas información confidencial, como credenciales de acceso a sistemas de FEMSA.
Aplicar chmod a directorios y su contenido
Para cambiar permisos de toda una carpeta y su contenido, agrega -R:
chmod -R 755 /home/usuario/proyectos/
Cómo cambiar el dueño con chown
chown (change owner) cambia el usuario y el grupo propietario de un archivo.
chown [usuario]:[grupo] archivo
Ejemplo 1: Cambiar el dueño de un archivo al usuario carlos:
chown carlos ventas_junio.csv
Ejemplo 2: Cambiar el dueño y el grupo al mismo tiempo:
chown carlos:contabilidad ventas_junio.csv
Ejemplo 3: Aplicar el cambio de forma recursiva a una carpeta completa:
chown -R ana:ti /home/usuario/reportes/
Nota: para ejecutar chown necesitas permisos de administrador. Antepón sudo al comando si el sistema lo requiere.
sudo chown carlos:contabilidad ventas_junio.csv
Tabla de permisos más comunes
| Octal | Simbólico | Uso típico |
|---|---|---|
777 |
rwxrwxrwx |
Peligroso: acceso total para todos |
755 |
rwxr-xr-x |
Scripts y programas ejecutables |
644 |
rw-r--r-- |
Archivos de texto y configuración |
700 |
rwx------ |
Archivos privados del dueño |
600 |
rw------- |
Archivos confidenciales (contraseñas, llaves SSH) |
000 |
---------- |
Sin acceso para nadie (ni el dueño) |
Errores comunes
Error 1: Usar 777 pensando que es "la solución fácil"
Dar permisos 777 a un archivo lo hace accesible y modificable por cualquier usuario del sistema. Esto es un riesgo grave de seguridad. Nunca uses 777 en archivos con datos confidenciales o scripts del sistema.
Error 2: Olvidar el permiso x en directorios
Para entrar a un directorio necesitas el permiso de ejecución (x), no solo el de lectura. Si un directorio tiene permisos r--, puedes ver que existe, pero no puedes acceder a su contenido con cd. El permiso mínimo para navegar un directorio es r-x (5 en octal).
Error 3: Cambiar el dueño sin sudo
Cambiar el propietario de un archivo es una operación privilegiada. Si ejecutas chown sin sudo en un archivo que no te pertenece, Linux devolverá un error de "Operación no permitida". Asegúrate de tener los permisos necesarios antes de intentarlo.
Error 4: Confundir permisos de archivo con permisos de directorio
Los permisos de un directorio afectan la capacidad de listar y entrar a él. Los permisos del archivo afectan la capacidad de leerlo o modificarlo. Puedes tener un archivo con rw- dentro de un directorio con --x: podrías entrar al directorio, pero no verías el archivo con ls.
Verificar permisos actuales
Antes de modificar permisos, siempre verifica el estado actual:
ls -l nombre_del_archivo
Para un directorio completo:
ls -la /home/usuario/reportes/
La opción -a muestra también los archivos ocultos (los que empiezan con punto).
Resumen de comandos clave
| Comando | Función |
|---|---|
ls -l |
Ver permisos de archivos |
chmod u+x archivo |
Dar ejecución al dueño |
chmod 644 archivo |
Establecer permisos con notación octal |
chmod -R 755 carpeta/ |
Aplicar permisos de forma recursiva |
chown usuario:grupo archivo |
Cambiar dueño y grupo |
sudo chown ... |
Cambiar dueño con privilegios de administrador |