← Назад к вопросам

Как посмотреть пользователей в системе

1.0 Junior🔥 241 комментариев
#Linux и администрирование

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI5 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Просмотр пользователей в 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 и регулярно используются при аудите безопасности, устранении неполадок и автоматизации развертывания.

Как посмотреть пользователей в системе | PrepBro