- Home »

Как посмотреть системных пользователей в Linux на Ubuntu
В этой статье разберёмся, как посмотреть системных пользователей в Linux на Ubuntu: зачем это вообще нужно, как работает механизм учёта пользователей, какие есть быстрые и надёжные способы получить список системных пользователей, и как это может пригодиться в реальной работе с сервером. Всё — на практике, с примерами, советами и даже лайфхаками для автоматизации. Если ты только начинаешь ковырять серверы или уже не первый год настраиваешь хостинг, — этот пост для тебя.
Зачем вообще смотреть системных пользователей?
В любой Unix-подобной системе, включая Ubuntu, пользователи — это не просто логины для входа. Это фундамент безопасности, разграничения прав, автоматизации и даже мониторинга. Системные пользователи — это не только люди, но и сервисы, демоны, процессы, которые живут своей жизнью и обеспечивают работу твоего сервера.
- Безопасность: лишние или подозрительные пользователи — потенциальная дыра.
- Администрирование: знать, кто есть кто, — must have для настройки прав и автоматизации.
- Тюнинг: иногда сервисы создают своих пользователей — и это влияет на работу и ресурсы.
Короче, если ты не знаешь, кто у тебя в системе, — ты не контролируешь свой сервер. А если не контролируешь — рано или поздно прилетит.
Как это работает?
В Linux (и, соответственно, в Ubuntu) все пользователи описаны в файле /etc/passwd
. Это текстовый файл, где каждая строка — отдельный пользователь. Формат строки такой:
имя_пользователя:хэш_пароля:UID:GID:комментарий:домашний_каталог:шелл
Ключевой момент — UID (User ID). Именно по нему можно отличить системных пользователей от обычных. В Ubuntu (и большинстве современных дистрибутивов) UID до 1000 — это системные пользователи (root, daemon, bin, sys, и т.д.), а с 1000 и выше — обычные (человеческие) пользователи.
- root — UID 0, главный админ.
- daemon, bin, sys, sync, games, man, lp, mail, news, uucp, proxy, www-data, backup, list, irc, gnats, nobody — стандартные системные пользователи для сервисов.
- Пользователи, которых создают пакеты (например,
mysql
,postgres
,www-data
).
Где ещё хранятся данные? Пароли — в /etc/shadow
(но туда просто так не заглянешь, нужны root-права). Группы — в /etc/group
.
Как быстро и просто всё настроить?
Самый быстрый способ — использовать стандартные команды Linux. Вот несколько вариантов, как посмотреть список всех пользователей, только системных или только обычных.
- Посмотреть всех пользователей:
cat /etc/passwd
- Вывести только имена пользователей:
cut -d: -f1 /etc/passwd
- Посмотреть только системных пользователей (UID < 1000):
awk -F: '$3 < 1000 {print $1, $3}' /etc/passwd
- Посмотреть только обычных пользователей (UID >= 1000):
awk -F: '$3 >= 1000 {print $1, $3}' /etc/passwd
- Посмотреть UID и домашний каталог:
awk -F: '{print $1, $3, $6}' /etc/passwd
- Посмотреть, кто сейчас залогинен:
who
- Посмотреть группы пользователя:
groups имя_пользователя
Если хочется по-красивому, можно использовать getent
— он работает не только с локальными файлами, но и с LDAP/NIS, если настроено:
getent passwd
Для фильтрации UID:
getent passwd | awk -F: '$3 < 1000 {print $1, $3}'
Примеры, схемы, практические советы
Сценарий | Что делать | Плюсы | Минусы |
---|---|---|---|
Проверить, нет ли лишних пользователей после установки ПО | diff <(cut -d: -f1 /etc/passwd) <(cat users_before.txt) |
Видно, кто добавился | Нужно заранее сохранить список |
Проверить, кто имеет shell-доступ | awk -F: '$7 ~ /bash|sh/ {print $1, $7}' /etc/passwd |
Видно, кто может логиниться | Не учитывает sudo через su |
Скрипт для мониторинга новых пользователей | Сравнивать /etc/passwd по cron и слать алерт |
Автоматизация, безопасность | Ложные срабатывания при обновлениях |
Удалить “забытых” пользователей | sudo deluser имя_пользователя |
Чистота системы | Можно удалить нужного, если не проверить |
Положительные и отрицательные кейсы
- Положительный: После установки MySQL появился пользователь
mysql
с UID < 1000. Всё ок — сервис работает под своим пользователем, безопасность соблюдена. - Отрицательный: После установки подозрительного пакета появился пользователь
hacker
с shell/bin/bash
и UID < 1000. Это тревожный звоночек — возможно, кто-то получил доступ к системе.
Рекомендация: регулярно проверяй список пользователей, особенно после установки новых пакетов или обновлений.
Команды для работы с пользователями
# Список всех пользователей
cat /etc/passwd
# Только имена пользователей
cut -d: -f1 /etc/passwd
# Только системные пользователи (UID < 1000)
awk -F: '$3 < 1000 {print $1, $3}' /etc/passwd
# Только обычные пользователи (UID >= 1000)
awk -F: '$3 >= 1000 {print $1, $3}' /etc/passwd
# Кто сейчас залогинен
who
# Группы пользователя
groups имя_пользователя
# Информация о пользователе
id имя_пользователя
# Добавить пользователя
sudo adduser имя_пользователя
# Удалить пользователя
sudo deluser имя_пользователя
# Список групп
cat /etc/group
# Проверить shell пользователя
awk -F: '{print $1, $7}' /etc/passwd
# Список пользователей с shell-доступом
awk -F: '$7 ~ /bash|sh/ {print $1, $7}' /etc/passwd
Похожие решения, программы и утилиты
- getent — универсальный способ получить список пользователей, работает с разными источниками данных. Документация
- finger — показывает инфу о пользователях, если установлен. Документация
- lslogins — утилита для просмотра информации о пользователях и логинах. Документация
- chage — показывает и меняет параметры учётной записи (например, срок действия пароля). Документация
- last — показывает историю входов пользователей.
Для автоматизации можно использовать Ansible (модуль user
), Puppet, SaltStack — они позволяют централизованно управлять пользователями на кластере серверов.
Статистика и сравнение с другими решениями
В мире Linux всё крутится вокруг /etc/passwd
и /etc/shadow
. В Windows, например, пользователи хранятся в реестре и управляются через GUI или PowerShell, а в FreeBSD — похожая схема, но с нюансами в UID и группах.
ОС | Где хранятся пользователи | Как посмотреть | Автоматизация |
---|---|---|---|
Ubuntu/Debian | /etc/passwd, /etc/shadow | cat, getent, awk | ansible, puppet, shell-скрипты |
CentOS/RHEL | /etc/passwd, /etc/shadow | cat, getent, awk | ansible, puppet, shell-скрипты |
Windows | Реестр, SAM | net user, PowerShell | PowerShell DSC, Group Policy |
FreeBSD | /etc/passwd, /etc/master.passwd | cat, pw | shell-скрипты, ansible |
Интересные факты и нестандартные способы использования
- Можно создавать “невидимых” пользователей с shell
/usr/sbin/nologin
— сервисы работают, но войти нельзя. - Некоторые rootkits маскируют своих пользователей, подделывая
/etc/passwd
— поэтому для критичных серверов стоит хранить контрольные суммы этого файла. - Можно быстро получить статистику по количеству пользователей:
wc -l /etc/passwd
- Для массового удаления пользователей с UID >= 1000 (например, при очистке VPS):
awk -F: '$3 >= 1000 {print $1}' /etc/passwd | xargs -n1 sudo deluser --remove-home
- Для поиска пользователей без домашнего каталога:
awk -F: '{if ($6 == "" || $6 == "/") print $1}' /etc/passwd
- Можно использовать watch для мониторинга изменений в реальном времени:
watch 'cat /etc/passwd'
Новые возможности: автоматизация и скрипты
Когда ты знаешь, как устроена система пользователей, открывается куча возможностей для автоматизации:
- Автоматическое создание/удаление пользователей через скрипты (например, для CI/CD или деплоя проектов).
- Мониторинг появления новых пользователей — ловим взломы и подозрительные активности.
- Гибкое управление правами доступа — например, добавлять пользователей в нужные группы через Ansible.
- Интеграция с LDAP/AD — централизованное управление пользователями на всех серверах.
Пример простого скрипта для алерта при появлении новых пользователей:
#!/bin/bash
diff <(cut -d: -f1 /etc/passwd) /var/backups/passwd_users.txt | grep "<" | mail -s "New user detected!" [email protected]
cp /etc/passwd /var/backups/passwd_users.txt
Можно запускать по cron и быть в курсе всех изменений.
Вывод — заключение и рекомендации
Знать, как посмотреть системных пользователей в Ubuntu — это не просто “для галочки”. Это основа безопасности, грамотного администрирования и автоматизации. Используй стандартные команды (cat
, awk
, getent
), не забывай про автоматизацию (скрипты, Ansible), и регулярно проверяй, кто живёт на твоём сервере. Это поможет избежать неприятных сюрпризов, держать систему в чистоте и быть на шаг впереди возможных проблем.
- Для быстрого старта — используй команды из этой статьи.
- Для автоматизации — подключай скрипты и инструменты управления конфигурациями.
- Для продвинутых задач — интегрируй с LDAP или внешними системами учёта.
Если нужен VPS для экспериментов или боевых задач — заказать VPS. Для максимальной мощности — выделенный сервер.
Прокачивай свои навыки, держи систему под контролем — и пусть твой сервер всегда будет только твоим!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.