En Linux, los grupos son una forma de organizar usuarios para administrar permisos y accesos de manera más sencilla. Un grupo puede contener uno o varios usuarios y se utiliza principalmente para controlar qué archivos, carpetas o recursos pueden utilizar determinados usuarios del sistema.
Gracias a los grupos, un administrador puede asignar permisos a varios usuarios al mismo tiempo sin tener que configurar permisos individuales para cada uno.
Por ejemplo:
- Un grupo llamado desarrolladores puede tener acceso a proyectos de programación.
- Un grupo llamado ventas puede acceder a documentos comerciales.
- Un grupo llamado docker puede ejecutar comandos de Docker sin usar sudo.
Tipos de grupos en Linux
Grupo primario
Es el grupo principal asignado a un usuario cuando se crea. Todos los archivos que cree el usuario normalmente pertenecerán a este grupo.
Grupos secundarios
Son grupos adicionales a los que un usuario puede pertenecer para obtener permisos extras.
Ejemplo:
usuario: oscar
- grupo primario: usuarios
- grupos secundarios: docker, developers, www-data
¿Dónde se guardan los grupos en Linux?
La información de los grupos se almacena principalmente en: /etc/group
Puedes visualizarlo con:
cat /etc/group
Ejemplo de salida:
developers:x:1002:oscar,juan
docker:x:999:oscar
La estructura es: nombre_grupo:password:GID:usuarios
- nombre_grupo: nombre del grupo
- password: normalmente aparece x
- GID: identificador del grupo
- usuarios: miembros del grupo
Contraseñas de grupos
El archivo /etc/gshadow es un archivo del sistema que almacena información sensible y segura sobre los grupos, principalmente relacionada con contraseñas de grupos y administración de miembros.
sudo cat /etc/gshadow
/etc/gshadow se utiliza para guardar:
- Contraseñas de grupos (cuando existen)
- Administradores del grupo
- Miembros del grupo
- Información que no debería quedar expuesta a todos los usuarios
Este archivo normalmente solo puede ser leído por root.
Cómo listar grupos en Linux
Listar todos los grupos
cat /etc/group
O también:
getent group
Respuesta:
sambashare:x:976:ofernandezigeoerp
ofernandezigeoerp:x:1000:
postgres:x:116:
_flatpak:x:117:
docker:x:974:ofernandezigeoerp
Listar grupos del usuario actual
groups
Listar grupos de un usuario específico
groups oscar
También puedes usar:
id oscar
Ejemplo: uid=1000(oscar) gid=1000(oscar) groups=1000(oscar),999(docker)
Cómo crear grupos en Linux
Para crear un grupo usamos el comando groupadd lo que realiza el comando al ejecutar es lo siguiente:
- Valida que el grupo no exista en /etc/group
- Asigna un identificador único (GID)
- Registra el grupo en /etc/group
Crear un grupo básico
El comando groupadd permite agregar nuevos grupos, revisar documentación en https://www.ibm.com/docs/es/psfa/7.1.0?topic=groups-add-linux
sudo groupadd developers
Al listar de nuevo los grupos podemos ver developers:x:1001:
Opciones más útiles
Puedes personalizar la creación del grupo utilizando los siguientes parámetros: [1]
-g [GID]: Asigna un ID de grupo (GID) específico en lugar de asignar el siguiente número disponible de forma automática.-fo--force: Fuerza la salida correcta si el grupo ya existe. Útil en scripts para evitar que el proceso se detenga por un error
Validar grupos creados
El comando getent group consulta la base de datos de grupos del sistema y muestra los detalles exactos del grupo:
getent group developers
Cómo modificar grupos en Linux
Con el comando groupmod permite cambiar propiedades de un grupo ya creado.
Se puede modificar principalmente:
- Nombre del grupo
- GID (Group ID)
Cambiar el nombre de un grupo
El comando groupmod cambia el nombre del grupo en Linux.
sudo groupmod -n programadores developers
Significa:
-n→ nuevo nombreprogramadores→ nuevo nombredevelopers→ grupo actual
Cambiar el GID de un grupo
sudo groupmod -g 3000 programadores
Cómo eliminar grupos en Linux
El comando groupdel se utiliza para eliminar un grupo existente del sistema.
Linux realiza las siguientes acciones:
- Busca el grupo
- Verifica que el grupo exista
- Elimina el registro del grupo
- Borra la entrada en /etc/group
- Actualiza /etc/gshadow
- Conserva los usuarios
Eliminar un grupo
sudo groupdel programadores
Importante:
- No puedes eliminar un grupo que sea el grupo primario de un usuario activo.
- Debes cambiar primero el grupo principal del usuario.
Cómo agregar usuarios a grupos
Agregar un usuario a un grupo secundario
sudo usermod -aG developers oscar
Parámetros:
- -a → append, agrega sin eliminar otros grupos
- -G → grupos secundarios
Verificar:
groups oscar
Agregar varios usuarios a un grupo
sudo usermod -aG developers juan
sudo usermod -aG developers maria
Cómo eliminar usuarios de un grupo
Quitar un usuario de un grupo
sudo gpasswd -d oscar developers
Cómo cambiar el grupo primario de un usuario
sudo usermod -g developers oscar
Verificar:
id oscar
Permisos y grupos en Linux
Linux maneja permisos mediante:
- Usuario propietario
- Grupo propietario
- Otros usuarios
Ver permisos de un archivo
ls -l
Ejemplo:
-rw-r----- 1 oscar developers 1200 May 28 archivo.txt
Interpretación:
- oscar → propietario
- developers → grupo propietario
- rw- → permisos del usuario
- r-- → permisos del grupo
- --- → permisos de otros
Cómo asignar un grupo a archivos y carpetas
Cambiar grupo de un archivo
sudo chown :developers archivo.txt
Cambiar grupo de una carpeta recursivamente
sudo chown -R :developers proyectos/
Cómo dar permisos a un grupo
Dar permisos de lectura y escritura
chmod g+rw archivo.txt
Dar permisos de ejecución
chmod g+x script.sh
Quitar permisos a un grupo
chmod g-r archivo.txt
Dar permisos recursivos a una carpeta
chmod -R g+rw proyectos/
Ejemplo práctico completo
Escenario
Quieres que varios desarrolladores tengan acceso compartido a una carpeta de proyectos.
Paso 1: Crear grupo
Creamos el grupo developer
sudo groupadd developers
Paso 2: Agregar usuarios
Agregamos los usuarios.
En el posts Guía Completa de Usuarios en Linux explicamos como crear los usuarios
sudo usermod -aG developers oscar
sudo usermod -aG developers juan
Paso 3: Crear carpeta
Creamos un nuevo directorio para realizar la prueba de usuarios:
sudo mkdir /proyectos
Paso 4: Cambiar grupo de la carpeta
Con el comando chown cambiamos el grupo de la carpeta de la siguiente forma
sudo chown :developers /proyectos
Paso 5: Dar permisos
Con el comando chmod cambiamos los permisos del folder
sudo chmod 770 /proyectos
Esto significa:
- 7 → usuario: lectura, escritura y ejecución
- 7 → grupo: lectura, escritura y ejecución
- 0 → otros usuarios sin acceso
Paso 6: Verificar
Usamos el comando ls para verificar los permisos y grupos
ls -ld /proyectos
Comandos importantes relacionados con grupos
- groupadd Crear grupo
- groupdel Eliminar grupo
- groupmod Modificar grupo
- groups Mostrar grupos
- id Información de usuario y grupos
- gpasswd Administrar grupos
- chmod Cambiar permisos
- chown Cambiar propietario y grupo
- usermod Modificar usuarios
Buenas prácticas
- Usa grupos para administrar permisos en equipos de trabajo.
- No otorgues permisos 777 innecesariamente.
- Usa grupos específicos para aplicaciones como Docker, Apache o PostgreSQL.
- Verifica permisos con ls -l constantemente.
- Documenta los grupos utilizados en servidores empresariales.