Grupos en Linux. Control de acceso sin complicaciones

Si los usuarios son los actores, los grupos son el reparto. Asignar permisos usuario a usuario es perder el tiempo — los grupos permiten gestionar el acceso a recursos para varios usuarios de una vez, cambiando una sola línea. Es la forma correcta de hacer administración de sistemas en Linux.
Este artículo complementa Usuarios en Linux I y Usuarios en Linux II. Si no los has leído, empieza por ahí.
👥 Grupo primario y grupo secundario
Cada usuario pertenece a un grupo primario y puede pertenecer a varios grupos secundarios.
- Grupo primario: el que se asigna a los ficheros que crea el usuario. Normalmente tiene el mismo nombre que el usuario.
- Grupos secundarios: grupos adicionales que otorgan acceso a recursos concretos (impresoras, discos, sudo, etc.).
Para ver los grupos de un usuario:
# Grupos del usuario actual
groups
# Grupos de un usuario concreto
groups sistemas
# Información completa: UID, GID primario y grupos secundarios
id sistemas📄 El fichero /etc/group
Toda la información de grupos vive en /etc/group. Su formato es sencillo:
nombre:contraseña:GID:miembros
Un ejemplo real:
sudo:x:27:gonzo,sistemas
docker:x:999:gonzo
sshusers:x:1001:adminuser,backupuser
xen el campo de contraseña significa que la contraseña está en/etc/gshadow(prácticamente en desuso).- El campo de miembros son los usuarios con ese grupo como secundario — los que lo tienen como primario no aparecen listados aquí.
⚙️ Gestión de grupos
Crear
# Crear grupo con GID automático
groupadd desarrolladores
# Crear grupo con GID específico
groupadd -g 1500 desarrolladoresModificar
# Cambiar el nombre del grupo
groupmod -n devs desarrolladores
# Cambiar el GID
groupmod -g 1600 devsEliminar
groupdel devsNota: no se puede eliminar un grupo que sea el grupo primario de algún usuario. Hay que reasignar antes.
👤 Añadir y quitar usuarios de grupos
El error clásico con usermod
# MAL — reemplaza todos los grupos secundarios del usuario
usermod -G docker sistemas
# BIEN — añade al grupo sin tocar los demás (-a de append)
usermod -aG docker sistemasOlvidar la -a es el error más común. El resultado es que el usuario pierde acceso a todo lo que tenía — incluido sudo si pertenecía a ese grupo.
Con gpasswd
# Añadir usuario al grupo
gpasswd -a sistemas docker
# Quitar usuario del grupo
gpasswd -d sistemas dockerAplicar sin cerrar sesión
Los cambios de grupo no se aplican hasta que el usuario abre una nueva sesión. Para aplicarlos en la sesión actual sin salir:
newgrp docker🔐 Permisos por grupo en la práctica
Cambiar el grupo propietario de un fichero
# Cambiar grupo de un fichero
chgrp desarrolladores proyecto.tar.gz
# Cambiar propietario y grupo a la vez
chown sistemas:desarrolladores proyecto.tar.gz
# Recursivo para un directorio
chown -R sistemas:desarrolladores /srv/proyecto/Permisos de grupo con chmod
# Dar lectura y escritura al grupo
chmod g+rw fichero.txt
# Quitar ejecución al grupo
chmod g-x script.sh
# Notación octal: propietario=7, grupo=5, otros=0
chmod 750 /srv/proyecto/El bit setgid — directorios compartidos
El bit setgid en un directorio hace que todos los ficheros creados dentro hereden el grupo del directorio, no el grupo primario del usuario que los crea. Imprescindible para carpetas compartidas entre varios usuarios:
# Crear directorio compartido
mkdir /srv/compartido
chgrp desarrolladores /srv/compartido
chmod 2770 /srv/compartido # el 2 activa el setgid
# Verificar
ls -ld /srv/compartido
# drwxrws--- 2 root desarrolladores 4096 ...
# La 's' en la posición del grupo indica setgid activoSin setgid, cada usuario crearía ficheros con su propio grupo primario y los demás del equipo no podrían editarlos.
🔑 El grupo sudo
En Debian/Ubuntu el acceso a sudo se gestiona mediante el grupo sudo. En Red Hat/Fedora es el grupo wheel. Añadir un usuario a ese grupo es la forma limpia de darle privilegios de administración sin tocar /etc/sudoers a mano:
# Debian/Ubuntu
usermod -aG sudo sistemas
# Red Hat/Fedora/CentOS
usermod -aG wheel sistemasPara revocar el acceso basta con quitarlo del grupo — sin editar ningún fichero de configuración:
gpasswd -d sistemas sudo✅ Resultado
| Operación | Comando |
|---|---|
| Ver grupos de un usuario | groups usuario / id usuario |
| Crear grupo | groupadd nombre |
| Renombrar grupo | groupmod -n nuevo_nombre nombre |
| Añadir usuario a grupo | usermod -aG grupo usuario |
| Quitar usuario de grupo | gpasswd -d usuario grupo |
| Cambiar grupo de fichero | chgrp grupo fichero |
| Directorio compartido con setgid | chmod 2770 directorio |
| Dar sudo | usermod -aG sudo usuario |
Con los grupos bien configurados puedes controlar el acceso a cualquier recurso del sistema sin tocar los permisos de cada fichero individualmente. Un usuario entra al grupo, accede al recurso. Sale del grupo, pierde el acceso. Simple y auditable.
