Главная
» LINUX
»
Linux: Как вывести список всех пользователей
Linux: Как вывести список всех пользователей
Чтобы вывести список всех пользователей в Linux, лучшей универсальной командой является `getent` getent passwd. Если вам нужны только имена пользователей, выполните `getent` getent passwd | cut -d: -f1. Обычно это дает более полные результаты, чем /etc/passwdпрямое чтение, поскольку `getent` следует конфигурации службы имен (NSS) системы , поэтому он может включать учетные записи, предоставленные такими службами, как LDAP или другими настроенными источниками идентификации.
Вывести список всех пользователей с помощью команды getent
Откройте терминал и выполните следующую команду:
getent passwd
Каждая строка представляет собой запись о пользователе. Чтобы отобразить только имена пользователей, используйте:
getent passwd | cut -d: -f1
Вы также можете просмотреть информацию по одной известной учетной записи, не прокручивая весь список:
getent passwd alice
В документации библиотеки GNU C поясняется, что NSS управляет тем, как системные базы данных, такие как, passwdразрешаются посредством /etc/nsswitch.conf. См. документацию по NSS в библиотеке GNU C.
getent passwdОтображает записи учетных записей, доступные через настроенные источники базы данных пользователей.
Список локальных пользователей из файла /etc/passwd
Если вам необходимо хранить учетные записи именно в локальной базе данных паролей, ознакомьтесь с файлом /etc/passwd. Этот файл содержит одну запись, разделенную двоеточием, для каждой локальной учетной записи. Типичная запись включает имя пользователя, заполнитель пароля, UID, основной GID, поле для комментариев, домашний каталог и оболочку входа в систему.
Только для имен пользователей:
cut -d: -f1 /etc/passwd
Аналогичный результат можно получить следующим образом awk:
awk -F: '{print $1}' /etc/passwd
В этот список обычно входят как учетные записи пользователей, так и служебные учетные записи, например root, , daemon, или учетные записи, созданные установленным программным обеспечением.
Эта cutкоманда извлекает только первое поле, которое представляет собой имя пользователя.
Просмотреть полные записи локальной учетной записи
Для просмотра всего локального файла используйте следующую команду, lessчтобы обеспечить удобную прокрутку:
less /etc/passwd
Вы также можете распечатать файл напрямую:
cat /etc/passwd
В современных системах Linux поле пароля обычно содержит x. Это не означает, что пароль хранится в виде открытого текста в /etc/passwd; хеши паролей обычно хранятся отдельно в /etc/shadow, который имеет более строгие права доступа. Проект Linux man-pages описывает семь полей и это поведение теневого пароля в passwd(5) .
Полная /etc/passwdзапись содержит имя пользователя, UID, GID, домашний каталог, оболочку и другие поля учетной записи.
Вывести список имен пользователей с помощью команды Bash compgen
Если вы используете Bash, compgenможно сгенерировать варианты автодополнения имени пользователя:
compgen -u
Для просмотра длинного изображения используйте следующую команду:
compgen -u | less
Или удалите повторяющиеся имена и отсортируйте результат:
compgen -u | sort -u
compgenЭто встроенная функция Bash, поэтому она менее универсальна, чем getentдля скриптов, которые должны работать в разных оболочках. В руководстве GNU Bash это описано compgenкак часть средств программируемого автодополнения Bash.
В Bash compgen -u | lessпредоставляет постраничный список имен пользователей.
Как отображать обычных пользователей вместо учетных записей служб?
Не существует единого порогового значения UID, подходящего для всех дистрибутивов Linux или организаций. Во многих системах более низкие значения UID резервируются для системных учетных записей, а обычным пользователям назначаются значения, начиная с установленного минимума, но эта политика может различаться. Если ваша система использует /etc/login.defs, вы можете проверить установленный минимум с помощью:
grep '^UID_MIN' /etc/login.defs
В качестве практической подсказки можно также обратить внимание на учетные записи с интерактивными оболочками:
Это всего лишь эвристический подход: у учетной записи может быть интерактивная оболочка, даже если она не является обычным пользователем настольного компьютера, а пользователи, управляемые извне, могут следовать другим политикам UID.
Сохраняйте, подсчитывайте или ищите пользователей в списке.
Получив необходимый список, вы можете легко использовать его повторно с помощью стандартных инструментов командной строки:
Сохранить имена пользователей:getent passwd | cut -d: -f1 > ~/linux-users.txt
Найдите одну учетную запись:getent passwd username
Какой метод следует использовать?
Команда
Лучше всего подходит для
getent passwd
Оптимальный вариант по умолчанию; соответствует настроенным источникам данных пользователя NSS.
cut -d: -f1 /etc/passwd
Только локальные имена пользователей
cat /etc/passwdилиless /etc/passwd
Проверка полных локальных записей учетных записей
compgen -u
Быстрый просмотр имен пользователей из Bash
Для большинства администраторов и пользователей настольных компьютеров начните с getent passwd | cut -d: -f1. Используйте , /etc/passwdесли вам намеренно нужны только локальные учетные записи.