El comando id en Linux: mostrar identidad del usuario actual

Introducción

En el mundo de los sistemas operativos tipo Unix, conocer la identidad del usuario bajo el cual se está ejecutando un proceso es fundamental para la administración de permisos, la solución de problemas de seguridad y la automatización de tareas. El comando id de Linux proporciona una forma rápida y directa de obtener ese información, mostrando el Identificador de Usuario (UID), el Identificador de Grupo (GID) y la lista de grupos suplementarios a los que pertenece el usuario. En este artículo exploraremos su funcionamiento, sus opciones más útiles y algunos ejemplos prácticos que puedes aplicar inmediatamente en tu terminal.

Qué es el comando id

El comando id pertenece al conjunto de utilidades básicas de GNU Coreutils y está presente en prácticamente todas las distribuciones de Linux. Su propósito principal es mostrar la identidad del usuario que lo invoca, pero también puede consultar la información de cualquier otro usuario especificado como argumento. Cuando se ejecuta sin parámetros, id imprime el UID, el GID y los grupos suplementarios del usuario actual, todo en una línea legible. Además, mediante distintas opciones, es posible obtener solo el UID, solo el GID, los nombres en lugar de los números, o incluso el ID real y efectivo en entornos con procesos setuid. Esta flexibilidad lo convierte en una herramienta indispensable tanto para administradores de sistemas como para desarrolladores que necesitan validar permisos dentro de sus scripts.

Sintaxis básica

La sintaxis más simple del comando id es: id [opciones] [usuario]. Si se omite el argumento usuario, el comando actúa sobre el usuario que está ejecutando la shell. Las opciones modifican qué información se muestra y en qué formato. Algunas de las más comunes son -u para mostrar solo el UID, -g para mostrar solo el GID, -G para listar todos los GID (incluyendo el primario y los suplementarios), -n para mostrar nombres en lugar de números cuando se combina con -u, -g o -G, y -r para imprimir el ID real en vez del efectivo en casos de procesos con privilegios elevados. Es importante recordar que, sin opciones, id muestra una salida combinada que incluye tanto el UID como el GID y la lista de grupos.

Opciones más usadas

  • -u: muestra solo el UID numérico. Ejemplo: id -u → 1000.
  • -g: muestra solo el GID primario numérico. Ejemplo: id -g → 1000.
  • -G: lista todos los GID (primario y suplementarios) separados por espacios. Ejemplo: id -G → 1000 24 27 30.
  • -n: cuando se combina con -u, -g o -G, muestra nombres en lugar de números. Ejemplos: id -un → nombre de usuario, id -gn → nombre del grupo primario, id -Gn → lista de nombres de grupos.
  • -r: muestra el ID real en vez del efectivo. Útil con procesos setuid. Ejemplo: id -r -u → UID real, id -u → UID efectivo.

Se pueden combinar, colocando primero -n o -r y luego la opción de ID deseada.

Ejemplos prácticos

  1. Información completa del usuario actual: id
    Salida típica: uid=1000(usuario) gid=1000(usuario) grupos=1000(usuario),24(cdrom),27(sudo),30(dip),46(plugdev)
  2. Solo el UID numérico: id -u
    Salida: 1000
  3. Solo el UID con nombre: id -un
    Salida: usuario
  4. Solo el GID primario numérico: id -g
    Salida: 1000
  5. Lista de todos los GID numéricos: id -G
    Salida: 1000 24 27 30 46
  6. Lista de todos los GID con nombres: id -Gn
    Salida: usuario cdrom sudo dip plugdev
  7. UID real en un proceso setuid: supongamos que ejecutas un programa con el bit setuid root; entonces:
    id -u → 0 (UID efectivo)
    id -r -u → 1000 (UID real)
  8. Consultar otro usuario: id -u nombredeusuario
    Esto devuelve el UID del usuario especificado, siempre que tengas permiso para leer su información.

Estos ejemplos ilustran cómo combinar opciones para obtener exactamente el dato que necesitas, ya sea para depurar permisos, configurar sudo o escribir scripts de automatización.

Casos de uso en scripts

En la práctica, el comando id se usa frecuentemente dentro de scripts de shell para tomar decisiones basadas en la identidad del usuario. Por ejemplo, un script que requiere privilegios de raíz puede comenzar con:

if [ $(id -u) -ne 0 ]; then
echo 'Este script debe ejecutarse como root' >&2
exit 1
fi

De esta forma se comprueba que el UID efectivo sea cero antes de continuar. Otro caso típico es obtener el nombre del grupo primario para asignar permisos a archivos creados por el script:

GROUP=$(id -gn)
chown -R :$GROUP /ruta/al/directorio

Además, id -Gn permite generar una lista de grupos a la que pertenece el usuario, útil para validar si el usuario está autorizado para acceder a ciertos recursos mediante comprobaciones de pertenencia a grupos.

Conclusión

El comando id es una herramienta sencilla pero poderosa que brinda información esencial sobre la identidad del usuario en un sistema Linux. Desde mostrar el UID y GID básico hasta listar todos los grupos y diferenciar entre IDs reales y efectivos, sus opciones permiten adaptar la salida a cualquier necesidad administrativa o de desarrollo. Dominar su uso te ayudará a escribir scripts más seguros, a diagnosticar problemas de permisos y a gestionar usuarios con mayor confianza en la línea de comandos.