Guía de Permisos en Linux 🐧

En Linux todo son ficheros y procesos, y detrás de cada uno de ellos hay un sistema de permisos que decide quién puede leer, modificar o ejecutar cada cosa. Entender esto no es opcional si alguna vez vas a administrar sistemas, depurar errores de acceso o simplemente quieres trastear sin romper nada importante.
Esta guía explica de forma práctica cómo identificar permisos, cómo cambiarlos con chmod, qué significan los números octales y cómo funcionan los permisos especiales como SUID, GUID y sticky bit. No es una lista de teoría seca: veremos ejemplos de terminal y la lógica detrás de cada comando.
Vamos a ello.
📌 Tabla de Contenidos
- 1️⃣ Identificación de permisos
- 2️⃣ Cambiar propietario y grupo
- 3️⃣ Cambiar permisos con chmod
- 4️⃣ SUID, GUID y sticky bit
1️⃣ Identificación de permisos
Antes de cambiar permisos o entender bits raros, hay que saber leerlos. Cada archivo y directorio en Linux tiene dueño, grupo y un conjunto de permisos que determinan quién puede hacer qué.
La forma más directa de ver esto es con ls -l:
|
|

Desglose de los permisos:
-
Primer carácter (
-) → indica si es un archivo o directorio: -
-archivo normal -
ddirectorio -
lenlace simbólico -
Primer bloque de tres (
rw-) → permisos del propietario (usuario): lectura (r), escritura (w), ejecución (xsi hubiera) -
Segundo bloque de tres (
r--) → permisos del grupo: lectura, escritura, ejecución -
Tercer bloque de tres (
r--) → permisos de otros: lectura, escritura, ejecución
Otros elementos:
-
anon→ usuario propietario del archivo -
anon→ grupo al que pertenece -
122→ tamaño en bytes -
ene 13 05:24→ fecha y hora del último cambio -
archivo.txt→ nombre del archivo
Con esto ya puedes ver quién puede hacer qué en un archivo o directorio, y es la base antes de modificar permisos.
2️⃣ Cambiar propietario y grupo
Antes de tocar permisos, sueles necesitar definir quién “posee” realmente un archivo o directorio, porque los permisos que se aplican dependen del propietario y del grupo.
En Linux usamos chown y chgrp para esto.
Cambiar propietario (usuario):
|
|
-
Esto asigna
nuevo_usuariocomo propietario del archivo. -
El grupo no se cambia, solo el dueño.
Cambiar grupo:
|
|
- *Cambia solo el grupo asignado al archivo.
Cambiar propietario y grupo a la vez:
|
|
- *Esto es muy útil para directorios compartidos o cuando creas archivos en entornos multiusuario.
Aplicar recursivamente en directorios:
|
|
- *El
-Rhace que todos los archivos y subdirectorios dentro también cambien.
🔍 Con esto controlas quién tiene realmente el “poder” sobre el archivo, y después ya puedes ajustar los permisos con
chmodsegún quieras que otros lean, escriban o ejecuten.
3️⃣ Cambiar permisos con chmod
El comando que usamos para modificar los permisos de un archivo es chmod. Para ver cómo funcionan los cambios de manera sencilla, podemos tomar como ejemplo un archivo llamado archivo.txt. Su salida con ls -l es la siguiente:
|
|
Si queremos quitar el permiso de lectura al grupo, podemos usar chmod g-r archivo.txt. Después de aplicar el comando, si volvemos a listar el archivo, la salida muestra que el grupo ya no puede leer:
|
|
En este ejemplo vemos cómo podemos ir ajustando los permisos de forma directa y específica para cada usuario, grupo u otros. También podemos hacer cambios más complejos, por ejemplo sobre un archivo que originalmente tiene todos los permisos activados para todos:
|
|
En este caso podríamos ir quitando o añadiendo permisos según sea necesario, pero hacerlo de forma manual con cada letra resulta ineficiente, especialmente cuando trabajamos con muchos archivos o con combinaciones de permisos más complejas. Por eso, veremos como usar la notación octal, que permite expresar los permisos de manera mucho más rápida y precisa.
Permisos en octal:
Cuando los permisos empiezan a ser muchos o queremos aplicarlos rápido, usar letras con chmod puede resultar un poco lioso. Aquí es donde entra la notación octal, que convierte los permisos en números para que sea mucho más fácil de leer y aplicar. La forma de entenderlo correctamente es pensar primero en binario.
Cada bloque de permisos, sea del propietario, del grupo o de otros, tiene tres posiciones: lectura, escritura y ejecución. Si lo representamos en binario, ponemos un 1 cuando el permiso está activo y un 0 cuando no lo está. Por ejemplo, rw- sería lectura y escritura activas, ejecución apagada. En binario se escribiría como 110.
Ahora, cada combinación de tres bits se puede convertir directamente a un número octal. Siguiendo el ejemplo anterior, 110 en binario equivale a 6 en octal, porque 1×4 + 1×2 + 0×1 = 6. Esto se hace para cada bloque: propietario, grupo y otros. Así, rw-r--r-- se convierte en 644: el propietario tiene 6, el grupo 4 y los otros 4.

Si el concepto del binario nos resulta confuso al principio, no hay problema. Podemos simplificarlo mucho pensando solo en los valores de cada permiso: lectura vale 4, escritura 2 y ejecución 1. Sumamos los valores de los permisos activos en cada bloque y obtenemos el número octal correspondiente. Por ejemplo, si un archivo tiene permisos de lectura y ejecución para el propietario, sumamos 4+1 y obtenemos 5. Si el grupo solo tiene lectura, es 4. Y si los otros no tienen permisos, es 0. El resultado final sería 540.

Con esta forma de pensar, el octal deja de ser un misterio y se convierte en una herramienta práctica para aplicar permisos complejos de manera rápida y confiable, sin tener que escribir toda la combinación de letras cada vez.
Una vez que entendemos cómo funciona la notación octal, aplicarla con chmod es muy sencillo. Por ejemplo, si queremos darle todos los permisos a todos, usamos chmod 777 archivo.txt. Esto significa que el propietario, el grupo y los demás tienen lectura, escritura y ejecución activas. Después de ejecutar el comando, si listamos el archivo con ls -l, vemos que efectivamente todos los permisos están activados:
|
|
Cuando trabajamos con directorios que contienen varios archivos y subdirectorios, puede resultar tedioso cambiar los permisos de cada uno por separado. Para eso usamos la opción -R, que aplica los permisos recursivamente. Por ejemplo, tenemos un directorio a con permisos iniciales:
|
|
Si queremos ajustar los permisos de forma recursiva para que el propietario tenga lectura, escritura y ejecución, y el grupo y los otros tengan lectura y escritura, podemos usar chmod 766 -R a. Después de aplicar el comando y listar de nuevo, vemos cómo los permisos se han aplicado a todos los contenidos del directorio:
|
|
Con esto, vemos que el octal nos permite aplicar permisos complejos de forma rápida y consistente, y que la opción -R es muy útil cuando necesitamos
cambiar permisos en directorios con varios archivos o subdirectorios.
4️⃣ SUID, GUID y sticky bit
Además de los permisos normales que ya hemos visto, en Linux existen permisos especiales que suelen tener usos concretos y avanzados. Estos no se aplican a todos los archivos de forma común, pero resultan muy útiles en programas o directorios con necesidades específicas de seguridad o comportamiento.
El primero de ellos es el SUID, o Set User ID. Cuando un archivo ejecutable tiene SUID, se ejecuta con los privilegios del propietario del archivo, no con los del usuario que lo ejecuta. Esto permite, por ejemplo, que ciertos programas puedan realizar acciones que normalmente solo el propietario podría hacer, sin necesidad de que el usuario tenga permisos elevados. Se ve en la salida de ls -l como una s en la posición de ejecución del propietario. Por ejemplo:
|
|
El segundo es el GUID, o Set Group ID. Funciona de manera similar al SUID, pero afecta al grupo. En archivos ejecutables, permite que el programa se ejecute con los permisos del grupo del archivo. En directorios, tiene un uso muy práctico: todos los archivos que se creen dentro de ese directorio heredan automáticamente el grupo del directorio, lo que facilita la gestión de archivos compartidos entre varios usuarios de un mismo grupo. Por ejemplo:
|
|
Por último está el sticky bit, que se aplica normalmente a directorios. Su función principal es impedir que los usuarios borren o renombren archivos que no son suyos dentro de ese directorio, aunque tengan permisos de escritura. Un ejemplo típico es /tmp, donde todos pueden escribir, pero no pueden tocar los archivos de otros usuarios. En la salida de ls -l, se representa como una t en el bloque de permisos de otros:
|
|
Estos permisos especiales permiten controlar el comportamiento de archivos y directorios de manera más “específica” que los permisos normales..
Hasta aquí llegamos con la guía de permisos en Linux. Hemos visto cómo identificar permisos, cambiar propietario y grupo, ajustar permisos con chmod, manejar octal y, por último, entender los permisos especiales como SUID, GUID y sticky bit.
Con esto puedes entender que suceden con los permisos que poseen tus arhivos y tener un control sobre quién puede hacer qué en tus archivos y directorios, y aplicar configuraciones de forma rápida y segura. Aprender estos conceptos es esencial para administrar correctamente tu sistema.
Más adelante podrás complementar esta guía con chattr y ACLs, para tener un control todavía más fino sobre tus archivos y directorios. Pero con lo que acabas de aprender, ya tienes una base sólida para moverte como un auténtico administrador de sistemas.