Як переглянути всіх доступних користувачів у Linux: повний посібник для адміністраторів VPS
Управління обліковими записами користувачів є однією з найфундаментальніших відповідальностей будь-якого адміністратора системи Linux. Незалежно від того, чи ви проводите аудит дозволів доступу, усуваєте проблеми з входом або посилюєте безпеку вашого сервера, знання того, які користувачі існують у вашій системі, є важливою навичкою. Цей посібник проведе вас через кожен практичний метод для перелічення та перевірки користувачів Linux — від читання необроблених системних файлів до використання потужних утиліт командного рядка.
Якщо ви використовуєте середовище VPS Hosting з AlexHost, ці методи застосовуються безпосередньо до вашого сервера Ubuntu, Debian або CentOS і допоможуть вам зберегти повний контроль над тим, хто має доступ до вашої інфраструктури.
Чому перегляд користувачів Linux важливий для безпеки сервера
Перш ніж переходити до команд, варто зрозуміти, *чому* це завдання настільки важливе. На будь-якому сервері Linux — особливо на тому, що розміщує веб-додатки як WordPress, Laravel або користувацькі API — з часом накопичується кілька облікових записів користувачів:
- Системні користувачі, створені автоматично встановленими сервісами (наприклад,
www-data,mysql,nginx) - Адміністративні користувачі з привілеями
sudoабо root - Користувачі додатків, пов’язані з конкретними стеками програмного забезпечення
- Забуті або сирітські облікові записи, залишені після видалення програмного забезпечення або змін персоналу
Регулярна аудит цих облікових записів допомагає вам:
- Виявити несанкціоновані або підозрілі облікові записи
- Застосовувати принцип найменшого привілею
- Відповідати політикам безпеки та вимогам аудиту
- Виявити неправильно налаштовані оболонки або домашні каталоги
З root доступом AlexHost, сховищем на основі NVMe та вбудованим захистом від DDoS, запуск цих команд є швидким, надійним і безпечним — навіть на виробничих системах під навантаженням.
Розуміння файлу /etc/passwd
Вся інформація про облікові записи користувачів у Linux зберігається у файлі /etc/passwd. Це база даних у простому текстовому форматі, яку операційна система читає під час операцій аутентифікації та управління користувачами. Кожен рядок у файлі представляє один обліковий запис користувача і слідує цій структурованій формі:
username:password:UID:GID:comment:home_directory:shellОсь що означає кожне поле:
| Поле | Опис |
|---|---|
username | Ім’я входу користувача |
password | Історично зберігалося тут; тепер замінено на x (фактичний хеш знаходиться в /etc/shadow) |
UID | Номер ID користувача (0 = root, 1–999 = системні користувачі, 1000+ = звичайні користувачі) |
GID | ID первинної групи |
comment | Необов’язковий опис або повне ім’я (поле GECOS) |
home_directory | Шлях до домашної папки користувача |
shell | Оболонка за замовчуванням, призначена користувачу |
Типовий запис виглядає так:
alexadmin:x:1001:1001:Alex Admin,,,:/home/alexadmin:/bin/bashРозуміння цієї структури значно полегшує інтерпретацію кожного методу нижче.
Метод 1: Перегляд усіх користувачів шляхом прямого читання /etc/passwd
Найпростіший підхід — вивести весь вміст /etc/passwd на ваш термінал. У вас є два основні варіанти залежно від того, як ви хочете навігувати по виводу.
Використання cat (найкраще для короткого виводу або передачі)
cat /etc/passwdЦе виводить весь файл на стандартний вихід. На типовому сервері ви побачите десятки записів — більшість з них системні облікові записи.
Використання less (найкраще для інтерактивного перегляду)
less /etc/passwdПейджер less дозволяє вам прокручувати файл в інтерактивному режимі. Натисніть q для виходу, / для пошуку та клавіші зі стрілками для навігації.
Приклад виводу
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
alexadmin:x:1001:1001::/home/alexadmin:/bin/bash
deploy:x:1002:1002::/home/deploy:/bin/bashПорада професіонала: Облікові записи з /usr/sbin/nologin або /bin/false як оболонкою не можуть входити в інтерактивному режимі — це облікові записи сервісів, які використовуються системними демонами.
Метод 2: Використання getent для запиту до бази даних користувачів
Команда getent (скорочено від *get entries*) отримує записи з системних баз даних, визначених у /etc/nsswitch.conf. Це переважний метод у сучасних середовищах Linux, оскільки він працює правильно навіть коли облікові записи користувачів беруться з зовнішніх каталогів, таких як LDAP або NIS — не тільки з локального файлу /etc/passwd.
getent passwdФормат виводу ідентичний /etc/passwd, але getent гарантує, що ви бачите *всіх* користувачів незалежно від того, де вони зберігаються. На стандартному VPS AlexHost вихід буде відповідати /etc/passwd, але використання getent вважається найкращою практикою для портативності та повноти.
Фільтр для конкретного користувача
getent passwd alexadminЦе повертає лише запис для користувача alexadmin — корисно для швидкої перевірки існування облікового запису та перевірки його конфігурації.
Метод 3: Вилучення лише імен користувачів за допомогою cut
Коли вам потрібен чистий список імен користувачів — без UID, домашніх каталогів або інформації про оболонку — поєднайте getent з командою cut, щоб виділити перше поле.
getent passwd | cut -d: -f1Як це працює:
getent passwdвиводить повну базу даних користувачів| cut -d: -f1передає цей вихід доcut, який використовує:як розділювач (-d:) і вилучає лише перше поле (-f1) — ім’я користувача
Приклад виводу
root
daemon
bin
sys
www-data
alexadmin
deploy
backupЦей чистий список ідеальний для написання скриптів, логування або швидкого сканування на предмет неочікуваних облікових записів.
Показати лише людських (облікових) користувачів
Системні облікові записи зазвичай мають UID нижче 1000. Щоб відфільтрувати лише звичайних користувачів, поєднайте awk з перевіркою UID:
awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwdЦе особливо корисно на середовищах спільного хостингу або серверах з багатьма облікових записів сервісів.
Метод 4: Використання awk для користувацького, вибіркового виводу
Команда awk — це потужний інструмент обробки тексту, який дає вам повний контроль над тим, які поля відображати та як їх форматувати. Це неоціненно, коли вам потрібен швидкий огляд облікових записів користувачів для адміністративних або цілей безпеки.
Відображення імен користувачів та домашніх каталогів
getent passwd | awk -F: '{print "Username: " $1 "t Home Directory: " $6}'Приклад виводу
Username: root Home Directory: /root
Username: www-data Home Directory: /var/www
Username: alexadmin Home Directory: /home/alexadmin
Username: deploy Home Directory: /home/deployВідображення імен користувачів, UID та оболонок
getent passwd | awk -F: '{print "User: " $1 "t UID: " $3 "t Shell: " $7}'Показати лише користувачів з дійсною оболонкою входу
getent passwd | awk -F: '$7 == "/bin/bash" || $7 == "/bin/sh" {print $1, $6, $7}'Ця команда особливо корисна для аудитів безпеки — вона розкриває кожен обліковий запис, який насправді може відкрити інтерактивний сеанс оболонки на вашому сервері.
Метод 5: Підрахунок загальної кількості користувачів
Потрібен швидкий підрахунок усіх облікових записів користувачів у системі?
getent passwd | wc -lЩоб підрахувати лише людських користувачів (UID ≥ 1000):
awk -F: '$3 >= 1000' /etc/passwd | wc -lМетод 6: Перевірка, які користувачі мають привілеї Sudo
Знання того, хто може підвищити привілеї, критично важливо для безпеки. Використовуйте ці команди для виявлення привілейованих облікових записів:
Перевірка членів групи sudo
getent group sudoПеревірка групи wheel (поширено на CentOS/RHEL)
getent group wheelСписок усіх sudoers (вимагає root)
sudo cat /etc/sudoersНа вашому VPS з cPanel або будь-якому середовищі керованої панелі керування деякі користувачі можуть мати права sudo, надані через конфігураційні файли, специфічні для панелі, у /etc/sudoers.d/.
Метод 7: Перегляд поточно залогованих користувачів
Щоб побачити, хто *активно* залогований на вашому сервері прямо зараз, використовуйте команду who або w:
whowКоманда w надає більше деталей, включаючи те, що кожен користувач наразі запускає, час його входу та тривалість неактивності. Це відмінний перший крок при розслідуванні підозрілої діяльності на вашому сервері.
Практичний робочий процес безпеки: аудит користувачів на вашому Linux VPS
Ось рекомендований робочий процес, який ви можете періодично запускати на будь-якому сервері AlexHost для збереження чистого та безпечного середовища користувачів:
# Step 1: List all human users
awk -F: '$3 >= 1000 && $1 != "nobody" {print $1}' /etc/passwd
# Step 2: Check who has sudo access
getent group sudo wheel
# Step 3: Identify accounts with login shells
getent passwd | awk -F: '$7 ~ /bash|sh/ {print $1, $7}'
# Step 4: See who is currently logged in
w
# Step 5: Review recent login history
last | head -20Регулярний запуск цього аудиту — або його автоматизація за допомогою завдання cron — це простий, але ефективний спосіб зберегти безпеку вашого сервера. Це особливо важливо, якщо ваш VPS розміщує кілька веб-додатків або якщо ви надали SSH доступ розробникам
