Introducción
En Linux, un grupo es una colección de usuarios. El propósito principal de los grupos es definir un conjunto de privilegios, como permiso de lectura, escritura o ejecución para un recurso determinado que se puede compartir entre los usuarios dentro del grupo. Los usuarios se pueden agregar a un grupo existente.
Este tutorial explica cómo mostrar todos los grupos de los que es miembro un usuario. También explicaremos cómo enumerar a todos los miembros de un grupo.
Grupos en Linux
Hay dos tipos de grupos a los que puede pertenecer un usuario:
- Grupo primario o de acceso: es el grupo asignado a los archivos creados por el usuario. Normalmente, el nombre del grupo principal es el mismo que el del usuario. Cada usuario debe pertenecer exactamente a un grupo principal.
- Grupo secundario o complementario: se utiliza para otorgar ciertos privilegios a un conjunto de usuarios. Un usuario puede ser miembro de cero o más subgrupos.
Muestra todos los grupos de los que es miembro un usuario
Hay varias formas de averiguar a qué grupos pertenece un usuario.
El grupo del usuario principal se almacena en el archivo /etc /passwd y los grupos adicionales, si los hay, se enumeran en el archivo /etc /group.
Una forma de encontrar grupos de usuarios es enumerar el contenido de esos archivos usando cat, less o grep. Otra opción más sencilla es utilizar un comando cuyo propósito es proporcionar información sobre usuarios y grupos en el sistema.
Usando el comando de grupos
El comando más fácil para enumerar todos los grupos de los que es miembro un usuario es el comando groups. Si se ejecuta sin un argumento, el comando imprimirá una lista de todos los grupos a los que pertenece el usuario actualmente conectado:
groups
El primer grupo es el grupo principal.
noviello sudo plugdev lpadmin
Para obtener una lista de todos los grupos a los que pertenece un usuario específico, dé el nombre de usuario al comando de grupos como argumento:
groups noviello
El primer grupo es el grupo principal.
noviello: noviello sudo
Usando el comando id
El comando id imprime información sobre el usuario especificado y sus grupos. Si se omite el nombre de usuario, muestra información para el usuario actual.
Por ejemplo, para obtener información sobre el usuario noviello, escriba:
id noviello
El comando mostrará el nombre de usuario ( uid ), el grupo principal del usuario ( gid ) y los grupos secundarios del usuario (grupos)
uid=1001(noviello) gid=1001(noviello) groups=1001(noviello),27(sudo)
Para imprimir solo nombres sin ID de usuario y grupo, use la opción -n. La opción -g imprime solo el grupo primario y la opción -G imprime todos los grupos.
El siguiente comando imprimirá los nombres de los grupos de los que el usuario actual es miembro:
id -nG
noviello sudo plugdev lpadmin
Lista de todos los miembros de un grupo
Para enumerar todos los miembros de un grupo, use el comando getent group seguido del nombre del grupo.
Por ejemplo, para encontrar los miembros de un grupo con el nombre ftp, use el siguiente comando:
getent group ftp
Si el grupo existe, el comando imprimirá el grupo y todos sus miembros:
ftp:x:126:piero,ftpuser
Si no hay salida, el grupo no existe.
Lista de todos los grupos
Para ver todos los grupos presentes en el sistema, simplemente abra el archivo /etc /group. Cada línea de este archivo representa información para un grupo.
less /etc/group
Otra opción es usar el comando getent que muestra las entradas de la base de datos configuradas en el archivo /etc/nsswitch.conf incluyendo el grupo de la base de datos que podemos usar para consultar una lista de todos los grupos.
Para obtener una lista de todos los grupos, escriba el siguiente comando:
getent group
La salida es la misma que cuando se visualiza el contenido del archivo /etc /group. Si está utilizando LDAP para la autenticación de usuarios, el comando getent mostrará todos los grupos tanto del archivo /etc /group como de la base de datos LDAP.
También puede usar awk o cut para imprimir solo el primer campo que contiene el nombre del grupo:
getent group | awk -F: '{ print $1}'
getent group | cut -d: -f1
Conclusión
En este tutorial, aprendió cómo encontrar los grupos de los que es miembro un usuario. Los mismos comandos se aplican a cualquier distribución de Linux, incluidos Ubuntu, CentOS, RHEL, Debian y Linux Mint.