Gestión de grupos en Linux : comandos y ejemplos prácticos
Table of Contents
I. Introducción
Este artículo trata sobre la gestión de grupos en Linux, con especial énfasis en la importancia del archivo "/etc/group" y el uso de varios comandos esenciales para realizar diversas tareas administrativas.
En una estación de trabajo o servidor, ya sea bajo Linux o Windows, la gestión de grupos es una operación que todo administrador de sistemas debería ser capaz de realizar. Esto es especialmente útil con sistemas multiusuario o sistemas en los que se despliegan diferentes servicios.
Como recordatorio, los grupos pueden utilizarse para agrupar a varios usuarios y asignarles permisos comunes. Estos pueden incluir permisos sobre archivos o directorios. Esto simplifica la gestión de los derechos de acceso, al tiempo que ofrece una mayor flexibilidad en la administración.
II. El archivo /etc/group
En las máquinas Linux, el archivo "/etc/group" desempeña un papel central en la gestión de grupos. ¿Por qué? Simplemente porque contiene una lista de todos los grupos presentes en el sistema, junto con sus atributos. En este archivo, que puedes ver ejecutando el comando que aparece a continuación, cada línea representa un grupo.
cat /etc/group
Aquí tiene una vista previa del archivo:

Su contenido sigue la siguiente sintaxis:
[nombre_grupo]:x:[GID]:[user_list]
- nombre_grupo: nombre del grupo.
- x: indica que la contraseña del grupo está almacenada en otro lugar (a menudo sin utilizar).
- GID: identificador único del grupo.
- user_list: miembros del grupo, separados por comas.
Cada usuario puede pertenecer a uno o varios grupos, y cada grupo tiene un identificador único llamado GID (Group ID).
Cuando se crea un usuario, normalmente también se crea un grupo con el mismo nombre. Por esta razón, es posible que vea una línea similar a la siguiente, donde "flo" corresponde al nombre del usuario. Para los elementos creados por el administrador del sistema, el GID comienza en 1000 y luego se incrementa en 1 (1001, 1002, etc.).
flo:x:1000:
He aquí otro ejemplo de línea que puede encontrar:
it-connect:x:1001:flo,sysadmin
En este ejemplo, el grupo "it-connect" tiene GID 1001 y los siguientes miembros: flo, sysadmin.
III. Linux: grupos primarios y secundarios
En una máquina Linux, cada usuario está asociado a un grupo primario y puede pertenecer también a varios grupos secundarios. ¿Qué significa esto? ¿Cuáles son las diferencias? Averigüémoslo.
A. Grupo primario
El grupo primario es el grupo principal al que se asigna un usuario. Se define cuando se crea el usuario y generalmente se utiliza por defecto para los archivos creados por el usuario.
Cada usuario está asociado a un grupo primario. El grupo primario se especifica en el archivo "/etc/passwd" de cada usuario. Por ejemplo, el usuario "flo" tiene un grupo con su nombre (creado cuando se creó el usuario) como grupo primario. Este es el comportamiento por defecto. Por eso tenemos la siguiente línea en el fichero "/etc/passwd":
flo:x:1000:1000:flo:/home/flo:/bin/bash
Cuando un usuario crea un archivo o directorio, el grupo propietario del archivo se define con su grupo primario, a menos que exista otra configuración (setgid).
B. Grupos secundarios
Los grupos secundarios son grupos adicionales a los que puede pertenecer un usuario. Permiten otorgar a un usuario permisos adicionales sobre archivos o recursos asociados a estos grupos (directorio compartido, recursos comunes, etc.). Puede ser un grupo personalizado que crees y al que añadas a tu usuario.
Un usuario puede pertenecer a varios subgrupos. Estos grupos se definen en el archivo "/etc/group". Cuando un usuario accede a un archivo o directorio, Linux comprueba sus permisos con los grupos secundarios para determinar si el acceso está autorizado o no.
IV. ¿Cómo crear un grupo en Linux?
A. Crear un grupo estándar
Para crear un grupo, utilice el comando groupadd, seguido del nombre del grupo que desea crear. Aquí tienes un ejemplo básico de cómo crear un grupo llamado "admins":
sudo groupadd admins
Este comando añade un grupo con un GID asignado automáticamente, según el principio de incremento descrito anteriormente. Para especificar un GID manualmente, utilice la opción "-g":
sudo groupadd -g 1010 admins
El siguiente comando creará un grupo llamado "admins" con GID "1010". Si ya está ocupado por otro grupo, se devolverá un error. En cualquier caso, en cuanto se crea un grupo, se añade al archivo /etc/group.
B. Crear un grupo de sistema
Un grupo creado con la opción "-r" mediante el comando groupadd es un grupo de sistema, mientras que un grupo creado sin esta opción es un grupo estándar. Por lo tanto, ya hemos creado un grupo estándar. Pero, ¿cuáles son las diferencias entre estos dos tipos de grupo?
- Los grupos del sistema están pensados para ser utilizados por servicios o demonios del sistema. Por ejemplo, un servicio como ssh o cron puede tener un grupo asociado.
- Los grupos estándar se utilizan para agrupar usuarios o gestionar sus permisos (en un directorio, por ejemplo).
También hay una diferencia notable en el rango de GIDs asignados. Recuerde que :
- Para los grupos de sistemas, los GID asignados automáticamente se encuentran dentro de un rango reservado para los grupos de sistemas. En la mayoría de las distribuciones de Linux, incluyendo Ubuntu y Debian, este rango está entre 1 y 999. Tenga en cuenta que los primeros GID ya están reservados.
- Para los grupos estándar, los GID asignados automáticamente se encuentran dentro de un rango, que también está reservado. Generalmente, a partir de 1000.
Estos rangos de GID pueden variar en función de la configuración del fichero "/etc/login.defs". Si consultas este archivo, verás que el contenido se hace eco de las explicaciones de este artículo:
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
#SYS_GID_MIN 100
#SYS_GID_MAX 999
Terminemos con un ejemplo de creación de un grupo de sistema llamado "copia de seguridad" :
sudo groupadd -r sauvegarde
V. Gestión de grupos en Linux: comandos que debe conocer
A. El comando usermod
En Linux, el comando usermod se utiliza para modificar los atributos de un usuario. Entre las acciones que puede realizar, hay una que nos interesa especialmente: añadir un usuario a un grupo.
El siguiente comando añadirá el usuario "flo" al grupo "admins ". Para realizar esta acción se utiliza la opción "-aG" seguida del nombre del grupo y a continuación el nombre del usuario, sin modificar otras pertenencias. Para ser más precisos, la opción " -a" significa "--append" y la opción "-G" significa "--groups".
sudo usermod -aG admins flo
¿Cómo comprobar que el usuario ha sido añadido a este grupo? Eso es lo que veremos en la siguiente parte de este artículo.
B. Grupos de ordenación
El comando groups muestra los grupos a los que pertenece un usuario. Sin argumentos, muestra los grupos del usuario actual (con el que está conectado):
groups
Para saber qué grupos pertenecen a un usuario concreto, especifique el nombre del usuario:
groups flo
Resultado de la muestra:
flo : flo adm cdrom sudo dip plugdev users lpadmin admins
El usuario es efectivamente miembro del grupo "admins ", ya que aparece en la lista.
C. El comando groupdel
Para eliminar un grupo, utilice el comando groupdel. El siguiente comando elimina el grupo "admins " del archivo "/etc/group". Ten en cuenta que los usuarios del grupo no perderán sus cuentas, pero ya no formarán parte del grupo.
sudo groupdel admins
D. El comando groupmod
El comando groupmod se utiliza para modificar los atributos de un grupo. Por ejemplo, para cambiar el nombre de un grupo. El ejemplo siguiente cambia el nombre del grupo "admins " a "administrators" (observe el orden de los valores).
sudo groupmod -n administrators admins
Para cambiar el GID de un grupo, utilice la opción "-g", como se muestra aquí para asociar el GID 2000 a nuestro grupo:
sudo groupmod -g 2000 administrators
E. El comando chgrp
Por último, nos gustaría mencionar el comando chgrp. En Linux, este comando se utiliza para cambiar el grupo propietario de un archivo o directorio. Es el equivalente del comando chown, pero sólo para el grupo. Por ejemplo:
sudo chgrp administrators credentials.txt
La imagen siguiente ilustra el grupo presente en un fichero antes y después de la ejecución del comando chgrp.

Es perfectamente posible aplicar el cambio recursivamente a un :
sudo chgrp -R administrators /path/to/folder
VI. Conclusión
Como administrador del sistema o simple usuario de Linux, es importante ser capaz de gestionar grupos en Linux, en particular a través de los comandos discutidos en este artículo. La gestión de grupos también está vinculada a la gestión de permisos en Linux.