Home » Как посмотреть системных пользователей в Linux на Ubuntu
Как посмотреть системных пользователей в Linux на Ubuntu

Как посмотреть системных пользователей в 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. Для максимальной мощности — выделенный сервер.

Прокачивай свои навыки, держи систему под контролем — и пусть твой сервер всегда будет только твоим!


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

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

Leave a reply

Your email address will not be published. Required fields are marked