Comandos LinuxExplicados en español
/
Ficha21 / 104
Categoría
Permisos
Ejemplos
5
Ver también
whoami · usermod · useradd · sudo

groups

groups (grupos)

Muestra a qué grupos pertenece un usuario.

Imprime los grupos de una cuenta: primero el grupo principal y después los suplementarios, que son los que dan acceso a archivos y servicios. Lo usas para confirmar si a alguien se le agregó un grupo (sudo, docker, www-data) o para revisar tu propia sesión después de un usermod. Solo muestra información: no cambia nada.

Sintaxisgroups [opciones] [USUARIO]...
§ 1

Despiece

5 ejemplos
Ver los grupos de tu usuario

Ver los grupos de tu usuario

1 pieza
Lámina01 / 05
Comandogroups
Piezas1
Escala1:1
N.ºPiezaTipoQué hace
1groupsComandoEl comando que imprime los grupos. Sin argumentos, usa tu propia cuenta.
Resultado

Imprime tu grupo principal y luego los suplementarios, por ejemplo ana sudo docker. El primero es tu grupo principal, el que aparece en ls -l en los archivos que creas; los demás te dan permisos extra.

Ver los grupos de otra persona

2 piezas
Lámina02 / 05
Comandogroups ana
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1groupsComandoEl comando que imprime los grupos.
2anaArgumentoLa cuenta que quieres revisar. Si no existe, groups avisa groups: 'ana': no such user.
Resultado

Cuando le pasas un nombre, groups imprime la cuenta y luego dos puntos: ana : sudo ana. El primer grupo de la lista es siempre el principal y los que siguen son los suplementarios, que son los que dan acceso a archivos de otros grupos.

Ver los grupos de root

2 piezas
Lámina03 / 05
Comandogroups root
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1groupsComandoEl comando que imprime los grupos.
2rootArgumentoLa cuenta de administrador.
Resultado

root : root. root casi no necesita grupos: el sistema le permite leer y modificar prácticamente todo, sin importar a qué grupos pertenezca.

Ver una cuenta de servicio

2 piezas
Lámina04 / 05
Comandogroups nobody
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1groupsComandoEl comando que imprime los grupos.
2nobodyArgumentoLa cuenta sin privilegios que usan algunos servicios.
Resultado

nobody : nogroup. nobody y nogroup existen para que un programa sirva archivos sin necesitar permisos, como Nginx con contenido estático. Es un buen ejemplo de cuenta de servicio: shell /usr/sbin/nologin y un solo grupo.

Verlos ordenados, uno por línea

7 piezas
Lámina05 / 05
Comandogroups | tr ' ' '\n' | sort
Piezas7
Escala1:1
N.ºPiezaTipoQué hace
1groupsComandoImprime los grupos separados por espacios.
2|OperadorPipe: manda lo que sale de un comando al siguiente.
3trComandoSustituye caracteres.
4' 'ValorLos espacios que trae la salida.
5'\n'ValorEl salto de línea por el que los va a cambiar.
6|OperadorOtra vez el pipe.
7sortComandoOrdena las líneas de la entrada.
Resultado

Cada grupo sale en su propia línea y ordenado, más fácil de leer y de comparar entre cuentas. Ojo: el truco solo funciona con tus propios grupos; si le pones un nombre, la primera línea queda como ana : y hay que quitarla a mano.

§ 2

Fallas comunes

FallaRemedio
Pasar un nombre de grupo en vez de un usuario: groups sudo.groups recibe usuarios, no grupos, así que responde groups: 'sudo': no such user. Para ver si un grupo existe y quién lo usa, usa getent group sudo; para ver tus grupos con número, id.
Esperar ver los grupos con los que corre un programa.groups responde por usuarios, no por procesos. Para ver con qué usuario y grupo está corriendo algo, usa ps -o pid,user,group -C nombre o revisa las líneas Groups de /proc/PID/status.
Suponer que el grupo principal es el último de la lista.El grupo principal va primero y los suplementarios después, siempre. Por eso el primero de la lista es el que ves como propietario en ls -l, y ese no se cambia con usermod -aG sino con usermod -g.
Usar la salida de groups dentro de un script sin limpiar.La salida de groups es texto con espacios, pensada para leerse a ojo. En scripts es mejor usar campos separados: id -gn para el grupo principal, id -Gn para los suplementarios, o getent group para un grupo concreto.
§ 3

Preguntas frecuentes

¿Cómo veo a qué grupos pertenezco?
Escribe groups y listo: imprime tu grupo principal y luego los suplementarios. Para verlos con número y nombre, y también tu UID, usa id. El grupo principal es el primero de la lista.
¿Cómo veo los grupos de otro usuario?
Con groups seguido del nombre: groups ana. Si le agregas el nombre, la salida empieza con la cuenta y dos puntos (ana : sudo ana). Si el usuario no existe, avisa groups: 'ana': no such user.
¿Cuál es la diferencia entre groups e id?
id muestra los grupos con su número y además el UID: uid=1000(ana) gid=1000(ana) grupos=1000(ana),27(sudo). groups solo imprime los nombres de los grupos, en texto plano y sin el usuario al inicio, que es más cómodo de leer.
¿Cuál es la diferencia entre el grupo principal y los suplementarios?
El principal se define al crear la cuenta y es el que aparece como propietario en ls -l. Los suplementarios se agregan después con usermod -aG o con adduser y dan acceso a archivos de esos grupos. groups siempre imprime el principal primero.
¿Por qué groups no me deja cambiar nada?
Porque solo lee e imprime; no modifica nada y no tiene opciones que cambien su comportamiento. Para cambiar los grupos de una cuenta se usa usermod: sudo usermod -aG docker USUARIO. Para ver los grupos que existen en el sistema, cat /etc/group.
§ 4

Ver también