При работе в многопользовательской среде Linux часто бывает необходимо знать, под какой учетной запись ю вы вошли в систему. Если вы управляете серверами, пишете сценарии автоматизации или устраняете неполадки с правами доступа, Linux предоставляет множество команд для отображения текущего имени пользователя.

Использование команды whoami

Команда whoami – это самый простой способ отображения текущего эффективного имени пользователя

Как это работает:

  • Считывает эффективный идентификатор пользователя (EUID) текущего процесса.
  • Ищет связанное с ним имя пользователя в файле /etc/passwd.
  • Всегда показывает , кем вы являетесь в данный момент.

Лучший пример использования:

  • При использовании sudo или переключении пользователей “whoami” показывает активного пользователя.

Использование команды id

Команда id позволяет узнать не только имя пользователя – она показывает идентификатор пользователя (UID), идентификатор группы (GID) и принадлежность к группе. Команда:

id -un

Альтернативный вариант, без флагов:

id

Как это работает:

  • Использует базу данных пользователей системы для отображения текущей информации о личности и группе.

  • -u → Отображает UID.

  • -n → Печатает имя пользователя вместо цифровых идентификаторов.

Использование команды logname

Команда logname отображает исходное имя пользователя, использованное для начала сеанса.

Команда:

logname

Ключевое отличие:

  • logname всегда возвращает имя пользователя, использованное для входа в сессию.

  • Если вы сменили пользователя с помощью su или sudo, он все равно покажет первоначальный логин.

Использование команды “who”

Команда who отображает всех пользователей, вошедших в систему в данный момент, и сведения об их сеансе.

Команда:

who am i

Пример вывода:

john tty1 2025-08-29 09:12

Как это работает:

  • Считывает данные о сеансе из /var/run/utmp.

  • Отображает оригинальное имя пользователя, терминал и временную метку входа.

🔹 Лучший пример использования:

  • При аудите текущих сеансов или в многопользовательских средах.

Использование переменной окружения $USER

В большинстве дистрибутивов Linux ваше текущее имя пользователя хранится в переменной окружения $USER.

Команда:

###ATP_NOTR_6_CODE_TAG_NOTR_ATP##

Пример вывода:

john

Как это работает:

  • Получает значение переменной $USER, установленной при входе в систему.

  • Легкая и очень быстрая.

Расширенные сценарии использования

a) Внутри сценариев оболочки

###ATP_NOTR_8_CODE_TAG_NOTR_ATP##

Полезен для автоматизации протоколирования.

б) Проверка зарегистрированных пользователей на сервере

###ATP_NOTR_9_CODE_TAG_NOTR_ATP##

Пример вывода:

john pts/0 2025-08-29 10:20 (192.168.1.10)
alice pts/1 2025-08-29 10:30 (192.168.1.15)

Отображает всех активных пользователей.

c) Объедините с ps для владельцев процессов

###ATP_NOTR_11_CODE_TAG_NOTR_ATP##
  • Показывает все процессы, принадлежащие текущему пользователю.

Соображения безопасности

  • Многопользовательские серверы: Всегда проверяйте своего эффективного пользователя перед выполнением привилегированных команд.

  • Контекст Sudo: Используйте “whoami” вместо $USER, чтобы избежать подмены переменной окружения.

  • Скрипты протоколирования: Предпочитайте id -un для точного определения имени пользователя.

Заключение

Linux предлагает несколько команд для отображения текущего имени пользователя, но каждая из них служит немного разным целям:

  • Используйте“whoami” для идентификации активного пользователя.
  • Используйте“id -un”, если вам нужна информация о группе.
  • Используйте“logname”, чтобы узнать, кто изначально вошел в систему.
  • Используйте echo $USER для быстрого поиска и написания сценариев оболочки.

Понимание этих различий очень важно для системного администрирования, автоматизации сценариев и аудита безопасности.