Permisos en Linux: usuarios, grupos y bits especiales (SUID, SGID y Sticky Bit)
Los permisos en Linux son el núcleo de su modelo de seguridad. Determinan quién puede leer, modificar o ejecutar un archivo. Pero detrás de esos tres caracteres “rwx” hay una estructura precisa, lógica y extremadamente potente. En esta guía definitiva te explico cómo funciona el sistema de permisos, qué papel juegan los usuarios y grupos, y cómo los bits especiales añaden capas extra de control.
Introducción: la base de la seguridad en Linux
En Linux, todo —absolutamente todo— es un archivo: desde un documento de texto hasta un dispositivo o proceso. Por eso, el sistema de permisos es el mecanismo que define qué usuarios pueden interactuar con esos archivos y de qué manera.
Comprender cómo funcionan los permisos no solo es esencial para administrar un sistema, sino también para entender por qué Linux es tan seguro frente a modificaciones accidentales o accesos indebidos.
Usuarios y grupos: los actores principales
Cada archivo en Linux tiene un propietario y un grupo asignado. A grandes rasgos:
- Usuario (owner): normalmente quien creó el archivo.
- Grupo: conjunto de usuarios que comparten ciertos permisos.
- Otros (others): todos los demás usuarios del sistema.
Estos tres niveles —usuario, grupo y otros— componen la base de la matriz de permisos.
$ ls -l archivo.txt
-rw-r--r-- 1 mauro staff 4096 nov 13 10:00 archivo.txtEn este ejemplo:
-rw-r--r--son los permisos.mauroes el propietario (usuario).staffes el grupo.
Tipos de permisos: lectura, escritura y ejecución
Los permisos básicos son tres:
- r (read): permiso de lectura (ver el contenido del archivo o listar el directorio).
- w (write): permiso de escritura (modificar o eliminar el contenido).
- x (execute): permiso de ejecución (ejecutar un binario o script, o acceder a un directorio).
La primera posición en la salida de ls -l indica el tipo de archivo:
- archivo regular
d directorio
l enlace simbólico
b dispositivo de bloque
c dispositivo de carácterPermisos numéricos y simbólicos
Linux permite definir permisos de dos maneras: simbólica y numérica.
Modo simbólico
$ chmod u+x script.sh # agrega ejecución al propietario
$ chmod g-w archivo.txt # quita escritura al grupoModo numérico (octal)
Cada permiso tiene un valor:
- r = 4
- w = 2
- x = 1
La suma define el valor del permiso:
$ chmod 755 script.shDesglose:
- 7 → propietario (4+2+1 = rwx)
- 5 → grupo (4+0+1 = r-x)
- 5 → otros (4+0+1 = r-x)
Bits especiales: SUID, SGID y Sticky Bit
Además de los permisos básicos, existen tres bits especiales que modifican el comportamiento de los archivos y directorios:
SUID (Set User ID)
Cuando un archivo ejecutable tiene el bit SUID, cualquier usuario que lo ejecute lo hace con los privilegios del propietario del archivo, normalmente root.
$ chmod 4755 /usr/bin/passwdEsto permite que usuarios normales cambien su contraseña (archivo /etc/shadow) sin ser root.
SGID (Set Group ID)
Similar al SUID, pero aplica al grupo. En archivos ejecutables, el proceso adopta el grupo del archivo. En directorios, los nuevos archivos heredan el grupo del directorio padre.
$ chmod 2755 /var/www/htmlIdeal para proyectos donde varios usuarios trabajan en el mismo directorio compartido.
Sticky Bit
Se usa principalmente en directorios compartidos (como /tmp). Impide que los usuarios borren archivos que no les pertenecen dentro de ese directorio.
$ chmod 1777 /tmpDe esa forma, cada usuario puede crear archivos en /tmp, pero solo borrar los suyos.
Resumen rápido:
SUID → ejecuta como propietario
SGID → ejecuta o crea con el grupo del archivo/directorio
Sticky → protege archivos en directorios compartidos
Visualización y diagnóstico de permisos
Comandos útiles para analizar permisos y propiedad:
# Ver permisos detallados
$ ls -l
# Ver permisos en formato octal
$ stat -c "%A %a %n" *
# Cambiar propietario y grupo
$ chown usuario:grupo archivo
# Cambiar permisos recursivamente
$ chmod -R 755 /var/wwwTambién es posible definir los permisos por defecto con umask, que controla qué permisos se restan al crear nuevos archivos.
$ umask
0022Esto significa que los archivos nuevos no tendrán permisos de escritura para el grupo ni otros.
Seguridad y buenas prácticas
- No otorgues permisos de escritura a “otros” salvo en directorios controlados (
/tmp). - Evita abusar de SUID/SGID; solo deben aplicarse cuando es estrictamente necesario.
- Usá grupos para delegar permisos en lugar de dar acceso directo a todos los usuarios.
- Revisá periódicamente los permisos con
find / -perm -4000(para SUID) o-2000(SGID).
Advertencia: los binarios con SUID root son una fuente común de vulnerabilidades si no están bien controlados.
Lecturas recomendadas
- Página man de chmod
- Arch Wiki: permisos y atributos
- Documentación del kernel (sistemas de archivos)
- Sistema de archivos en Linux (NotiLinux)
Conclusión
Los permisos son la primera barrera de seguridad en Linux. Conocerlos en profundidad te permite no solo proteger tu sistema, sino también administrar correctamente el acceso a datos y procesos. Los bits especiales amplían esa lógica, ofreciendo herramientas poderosas para entornos multiusuario.
Si dominás los permisos, entendés el corazón del control de acceso en Linux. En próximos artículos de esta serie exploraremos cómo ACLs y SELinux llevan este modelo aún más lejos.
