Comando id: comprobar el UID y los grupos, whoami, groups y grupos suplementarios
Para comprobar el UID y los grupos de la cuenta actual en un servidor Linux se usa el comando id; si solo hace falta el nombre de la cuenta se usa whoami, y si solo hacen falta los nombres de los grupos, groups. Al ejecutar los tres comandos uno tras otro en servidores AlmaLinux 9 y Debian 12 y comparar la salida, id -un y whoami mostraron el mismo nombre de cuenta, y groups mostró la lista de grupos de id dejando solo los nombres.
La salida de abajo se obtuvo en un servidor AlmaLinux 9.8 con la cuenta root y en un servidor Debian 12 con una cuenta normal. El nombre y los números de la cuenta de inicio de sesión y sus grupos suplementarios se cambiaron por valores de ejemplo (user1, 1000, adm, systemd-journal).
1️⃣ Uso básico del comando id
Al ejecutar id sin opciones, la información de la cuenta que ejecutó el shell actual aparece en una línea. Al ejecutarlo con la cuenta root, los tres campos eran 0(root).
iduid=0(root) gid=0(root) groups=0(root)El campo uid es el número y el nombre de la cuenta, y el campo gid es el número y el nombre del grupo primario (primary group). El campo groups son todos los grupos a los que pertenece la cuenta, con el grupo primario en primer lugar.
Si se escribe un nombre de cuenta después de id, se muestra la información de esa cuenta. Al comprobar la cuenta normal user1, que tiene grupos suplementarios, en el campo groups aparecieron adm y systemd-journal detrás del grupo primario user1. Estos grupos a los que pertenece además del grupo primario son los grupos suplementarios (supplementary group).
id user1uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)Muchas cuentas tienen el mismo número de UID y de gid, por lo que es fácil tomar los dos números por el mismo valor, pero la cuenta adm que viene de serie en el servidor tenía el UID 3 y el número de grupo primario 4. La cuenta operator tenía root como grupo primario.
id admuid=3(adm) gid=4(adm) groups=4(adm)id operatoruid=11(operator) gid=0(root) groups=0(root)Si se escriben varias cuentas, se muestra una por línea.
id root binuid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)Si se escribe una cuenta que no existe, aparece el error [no such user], y el código de salida fue 1.
id no-such-user9id: 'no-such-user9': no such userecho $?1El código de salida cuando se escribe una cuenta que existe es 0, así que en un script se puede usar como condición para comprobar si una cuenta existe.
2️⃣ Opciones del comando id
Para pasar a un script un solo número de toda la salida, se elige un único campo con una opción. -u muestra el UID, -g el número del grupo primario y -G todos los números de los grupos a los que pertenece la cuenta.
id -u0id -u daemon2id -G user11000 4 190Si se añade -n, aparecen nombres en lugar de números. Al comprobar los grupos de user1 con [id -Gn], los tres números se convirtieron en tres nombres.
id -Gn user1user1 adm systemd-journalid -gn user1user1-n y -r se usan junto con una de las opciones -u, -g y -G. Al escribir solo -n apareció el error de abajo.
id -nid: cannot print only names or real IDs in default format-r muestra el ID real en lugar del ID efectivo (effective). Al ejecutar [id -ur] en un shell de la cuenta root apareció 0. Si se escriben juntas dos o más opciones que eligen un número, como -u y -g, aparece el error [cannot print "only" of more than one choice]. Las opciones se resumen a continuación.
| Opción | Copiar | Descripción |
|---|---|---|
| -u--user | Muestra el número de UID | |
| -g--group | Muestra el número del grupo primario | |
| -G--groups | Muestra todos los números de los grupos a los que pertenece | |
| -n--name | Con -u, -g o -G, muestra el nombre en lugar del número | |
| -r--real | Con -u, -g o -G, muestra el ID real en lugar del ID efectivo |
| Opción | Copiar | Descripción |
|---|---|---|
| -Z--context | Muestra solo el contexto de seguridad del proceso | |
| -z--zero | Separa los elementos de la salida con caracteres NUL en lugar de espacios; no se puede usar en el formato predeterminado | |
| -a | Solo se acepta por compatibilidad con otras versiones de id y se ignora | |
| --help | Muestra la ayuda | |
| --version | Mostrar la versión |
🔲 Simulador del comando id
El simulador de abajo empieza con la cuenta user1, que tiene grupos suplementarios. Después de añadir el grupo wheel con el chip [🖊 Otra ventana], se pueden comparar [id] e [id user1] y comprobar los grupos de un shell nuevo con el chip [🔁 Iniciar sesión de nuevo].
3️⃣ El comando whoami e id -un
Si solo hace falta el nombre de la cuenta del shell actual, se ejecuta whoami. La página de man describe whoami como el mismo comando que [id -un]. Al ejecutar los dos comandos con la cuenta root, ambos mostraron root.
whoamirootid -unrootCon una cuenta normal del servidor Debian 12, los dos comandos también mostraron el mismo nombre de cuenta.
whoamiuser1id -unuser1whoami muestra el nombre de la cuenta que corresponde al UID efectivo (effective) actual. Es un comando que solo comprueba la cuenta actual, así que si se añade un nombre de cuenta detrás aparece un error.
whoami user1whoami: extra operand 'user1'
Try 'whoami --help' for more information.El nombre o el número de otra cuenta se comprueba escribiendo esa cuenta después de id.
id -un user1user1Si se escribe -u en lugar de -un, en el mismo lugar aparece el número de UID en vez del nombre de la cuenta.
4️⃣ El comando groups y los grupos suplementarios
groups muestra solo los nombres de los grupos en una línea. Si no se escribe un nombre de cuenta aparecen los grupos del shell actual, y con la cuenta root era solo root.
groupsrootSi se escribe un nombre de cuenta, aparecen el nombre de la cuenta y, tras los dos puntos, los grupos. Al escribir varias cuentas se mostró una por línea.
groups user1 daemonuser1 : user1 adm systemd-journal
daemon : daemonEl grupo primario y los grupos suplementarios se registran en lugares distintos. Los grupos suplementarios se anotan como miembros en el cuarto campo de la base de datos de grupos (/etc/group), y el grupo primario se anota como número en el cuarto campo de la información de la cuenta (/etc/passwd).
getent group admadm:x:4:user1getent group user1user1:x:1000:getent passwd daemondaemon:x:2:2:daemon:/sbin:/sbin/nologinEl grupo user1, que es el grupo primario de user1, tenía vacío el cuarto campo, y en el grupo suplementario adm figuraba user1 como miembro. El 2 del cuarto campo de la línea de la cuenta daemon es el número del grupo primario.
Para añadir una cuenta a un grupo suplementario se usa el comando usermod con [usermod -aG grupo cuenta]. Si se usa solo -G sin -a, la cuenta sale de los grupos suplementarios existentes que no se escriban en la lista, así que -a se escribe junto con ella.
groups ejecutado sin nombre de cuenta muestra los grupos del proceso del shell actual. La página de man explica que, si la base de datos de grupos cambia, este valor puede ser distinto del de la base de datos.
Por eso, justo después de cambiar los grupos se comprueban los grupos de la base de datos con [groups cuenta] o [id cuenta], y para aplicarlos al shell se vuelve a iniciar sesión. Para cambiar el ID de grupo actual sin cerrar la sesión existe el comando newgrp.
🔢 FAQ & contenido recomendado
Crear cuentas
Linux: comando useradd & comando passwd
Comandos para crear una cuenta de usuario nueva y fijar la contraseña de esa cuenta.
Borrar cuentas
[Linux] Comando userdel: borrar cuentas de usuario
Un comando que borra una cuenta de usuario que ya no se usa y limpia también su carpeta personal.
Caducidad de la contraseña
Comando chage de Linux
Un comando que comprueba y cambia el periodo de validez y la fecha de caducidad de la contraseña de una cuenta de usuario.
ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.