Как да видите всички налични потребители в 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 гарантира, че видите *всички* потребители независимо откъде се съхраняват. На стандартен AlexHost VPS изходът ще съответства на /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 достъп на разработчици или подизпълнители.
Управление на потребители извън преглеждането: Следващи стъпки
След като идентифицирате потребителите си, може да се наложи да предприемете действие. Ето най-често използваните команди за управление на потребители:
| Задача | Команда |
|---|---|
| Доб |
