Как в Linux получить список всех пользователей, включая системных

«Как в Linux получить список всех пользователей, включая системных» — вопрос из категории Операционные системы, который задают на 10% собеседований Python Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Linux информация о пользователях хранится в текстовой базе данных. Основной способ получить полный список — обратиться к ней напрямую или с помощью специальных утилит.

1. Чтение файла /etc/passwd

Это самый прямой способ. Файл /etc/passwd содержит информацию обо всех локальных пользователях системы. Каждая строка представляет одного пользователя с полями, разделенными двоеточием (:).

cat /etc/passwd

2. Использование команды getent (рекомендуется)

Утилита getent (get entries) запрашивает данные из сконфигурированных системных баз (NSS). В отличие от cat /etc/passwd, она также покажет пользователей из сетевых служб, таких как LDAP или NIS, если они используются в системе. Это более универсальный метод.

getent passwd

Как вывести только имена пользователей?

Для извлечения первого поля (имени пользователя) из вывода используйте утилиту cut.

# -d':' — установить разделитель-двоеточие
# -f1  — выбрать первое поле
getent passwd | cut -d: -f1

Как отличить системных пользователей от обычных?

Системные пользователи обычно имеют идентификатор пользователя (UID) меньше 1000. UID — это третье поле в строке /etc/passwd. Для их фильтрации удобно использовать awk.

# Вывести всех системных пользователей (UID < 1000)
awk -F: '$3 < 1000 {print $1}' /etc/passwd