В огромном паровом чреве Linux-сервера ежедневно крутятся тысячи процессов-шестеренок. Каждый процесс, скрипт или демонический механизм действует от имени определенного кочегара, инженера или цеховой гильдии. Если процесс пытается повернуться к вентилю высокого давления или манометру без надлежащего патента, механизмы заклинивает, и система выдает сухой вердикт: Permission denied. В этот момент сисадмин достает свой проверенный латунный штангенциркуль — команду id.
Утилита id — это фундаментальный инструмент аутентификации и авторизации в командной строке Bash. Она мгновенно считывает системную бляху пользователя: цифровой идентификатор оператора (UID), его первичную гильдию (GID), а также полный список всех вспомогательных цехов (дополнительных групп) и текущий контекст безопасности. Без понимания работы id сисадмин сродни слепому механику: он не сможет отладить ни локальные права доступа к файлам, ни сложные сетевые монтирования.
Когда под капотом сервера кипит работа, именно id помогает выяснить, почему свежая утилита отказывается писать в логи, отчего скрипт резервного копирования застрял на полпути и под каким именно мандатом выполняется запущенная служба.
Синтаксис
Формат вызова утилиты предельно прост и лаконичен. Без указания параметров команда опрашивает текущего инженера, сидящего за терминалом:
id [опции] [имя_пользователя]Если передать имя конкретного учетного записедержателя (например, id steamworker), утилита покажет паспортные данные указанного персонажа без необходимости переключаться в его сессию.
ОСНОВНЫЕ ОПЦИИ
Для точечной выемки данных id оснащена набором переключателей. Ниже собраны наиболее используемые рычаги утилиты:
| Опция | Описание | Пример |
|---|---|---|
-u, --user | Выводит только числовой идентификатор пользователя (UID). | id -u |
-g, --group | Выводит только числовой идентификатор основной группы (GID). | id -g |
-G, --groups | Выводит числовые ID всех групп, в которых состоит пользователь. | id -G |
-n, --name | Отображает текстовое имя вместо числового ID (используется в связке с -u, -g, -G). | id -un |
-r, --real | Показывает реальный ID вместо эффективного (полезно при работе с SUID-битами). | id -ur |
-z, --zero | Разделяет выводимые значения нулевым байтом (NUL) вместо пробелов (для скриптов). | id -Gn -z |
-Z, --context | Отображает контекст безопасности SELinux / AppArmor для текущей сессии. | id -Z |
ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ
Полный срез идентификаторов текущего инженера
Самый частый сценарий — запуск утилиты без флагов для мгновенной диагностики прав.
idПример вывода:
uid=1000(mechanic) gid=1000(mechanic) groups=1000(mechanic),10(wheel),998(wheel),995(docker)Здесь сисадмин четко видит:
- uid=1000: числовой и текстовый идентификатор пользователя.
- gid=1000: главная гильдия.
- groups=…: дополнительные цехи (обратите внимание на группу
docker— именно она дает право управлять контейнерами без запросаsudo).

Разведка прав при сетевом монтировании (NFS и showmount)
При настройке сетевых хранилищ NFS сисадмин сначала выполняет разведку доступных шаров с помощью showmount:
showmount -e 192.168.1.50Допустим, команда showmount показала экспорт /srv/steam_share 192.168.1.0/24. Инженер монтирует этот каталог локально, но при попытке записать туда файл получает отказ.
Причина кроется в сопоставлении UID! NFS-сервер проверяет права на основе цифровых UID, а не текстовых имен. Сисадмин проверяет свой паспорт на локальной машине и на удаленном сервере:
# Проверка локального UID
id -u
# Проверка UID пользователя на удаленном NFS-сервере через SSH
ssh admin@192.168.1.50 "id -u mechanic"Если локальный UID равен 1000, а на NFS-сервере папка принадлежит UID 1005 (или на NFS включен опциональный параметр root_squash, подменяющий root на UID 65534 / nobody), запись не пройдет. Благодаря id сисадмин быстро находит нестыковку в цифровых бляхах и корректирует учетные записи или правила экспорта NFS.
Автоматизация в конвейерах и проверка root-прав в скриптах
Паровые скрипты Bash часто требуют привилегий суперпользователя (root). Вместо парсинга строки whoami опытный инженер запрашивает сухой числовой UID с помощью id -u:
#!/bin/bash
if [ "$(id -u)" -ne 0 ]; then
echo "⚡ Ошибка: Для запуска этого механизма требуются права Главного Инженера (root)!" >&2
exit 1
fi
echo "⚙️ Проверка прав пройдена. Запуск котлов..."СОВЕТЫ И ПРИМЕЧАНИЯ
💡 Совет
Если вы добавили пользователя в новую группу (например, usermod -aG docker mechanic), команда id в текущем открытом терминале продолжит показывать старый список групп. Не спешите перегружать весь паровой сервер! Достаточно обновить контекст текущей сессии командой exec su - $USER или newgrp docker, после чего id сразу отобразит свежий цех.
⚡ Важно
Не путайте Реальный UID (id -ur) и Эффективный UID (id -u). Когда бинарный файл имеет установленный SUID-бит (например, утилита passwd), ваш реальный ID остается равен 1000, но эффективный ID на время выполнения процесса становится 0 (root). Команда id без флага -r показывает именно эффективные права, определяющие реальные полномочия процесса в данный момент.