Как посмотреть пользователей в системе
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Просмотр пользователей в Unix/Linux системах
В системах на базе Unix/Linux существует несколько основных способов просмотра списка пользователей, каждый из которых служит для разных целей.
1. Основные файлы с информацией о пользователях
/etc/passwd – главный файл, содержащий информацию обо всех пользователях. Каждая строка соответствует одному пользователю и содержит 7 полей, разделенных двоеточиями.
cat /etc/passwd
Пример вывода:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
alice:x:1000:1000:Alice Smith:/home/alice:/bin/bash
Для более читаемого формата можно использовать:
column -t -s: /etc/passwd | less
/etc/shadow содержит зашифрованные пароли пользователей (требует прав root):
sudo cat /etc/shadow
2. Утилиты командной строки
getent – наиболее универсальная команда, работающая с различными базами данных:
getent passwd
Эта команда показывает пользователей из всех источников, включая LDAP/NIS при их настройке.
cut для извлечения только имен пользователей:
cut -d: -f1 /etc/passwd
awk для более сложной фильтрации:
awk -F: '{print $1 " (UID: " $3 ")"}' /etc/passwd
3. Фильтрация и поиск пользователей
Поиск пользователей с интерактивной оболочкой (исключает системных пользователей):
grep -E ":/bin/(bash|zsh|sh)$" /etc/passwd | cut -d: -f1
Поиск по UID (идентификатору пользователя):
# Системные пользователи (обычно UID < 1000)
getent passwd | awk -F: '$3 < 1000 {print $1}'
# Обычные пользователи (обычно UID >= 1000)
getent passwd | awk -F: '$3 >= 1000 {print $1}'
4. Проверка текущих пользователей в системе
who – показывает кто сейчас в системе:
who
w – более подробная информация о текущих пользователях:
w
last – история входа пользователей:
last | head -20
users – список имен пользователей, вошедших в систему:
users
5. Практические примеры для DevOps
Скрипт для аудита пользователей:
#!/bin/bash
echo "=== Аудит пользователей системы ==="
echo "Всего пользователей: $(getent passwd | wc -l)"
echo "Системные пользователи: $(getent passwd | awk -F: '$3 < 1000' | wc -l)"
echo "Обычные пользователи: $(getent passwd | awk -F: '$3 >= 1000' | wc -l)"
echo ""
echo "Пользователи с оболочкой bash:"
getent passwd | grep ":/bin/bash$" | cut -d: -f1 | sort
Проверка привилегированных пользователей (с UID 0):
getent passwd | awk -F: '$3 == 0 {print "Привилегированный пользователь: " $1}'
6. Визуализация с помощью утилит
Создание отчета в формате таблицы:
printf "%-15s %-10s %-10s %-30s\n" "Пользователь" "UID" "GID" "Описание"
printf "=%.0s" {1..65}
echo ""
getent passwd | awk -F: '{printf "%-15s %-10s %-10s %-30s\n", $1, $3, $4, $5}' | head -20
Важные моменты для DevOps-инженера
- Безопасность: При работе с
/etc/shadowтребуются права root. В production-средах используйте минимально необходимые привилегии - Консистентность: Команда
getentпредпочтительнее прямого чтения/etc/passwd, так как учитывает внешние источники аутентификации - Автоматизация: В скриптах всегда проверяйте коды возврата команд при работе с пользователями
- Мониторинг: Регулярно проверяйте появление подозрительных пользователей с нестандартными UID или оболочками
Эти команды составляют основу управления пользователями в Linux и регулярно используются при аудите безопасности, устранении неполадок и автоматизации развертывания.