- Home »

Как добавлять и удалять пользователей в CentOS 8
Управление пользователями в CentOS 8 — это базовый навык каждого системного администратора. Хотя большинство считает эту задачу тривиальной, в реальности есть множество нюансов, которые могут сильно усложнить жизнь. В этой статье разберём не только стандартные команды, но и продвинутые техники, автоматизацию и подводные камни, с которыми вы обязательно столкнётесь при работе с пользователями.
Независимо от того, настраиваете ли вы VPS для веб-проекта или управляете выделенным сервером для корпоративных нужд, правильное управление пользователями — это основа безопасности и стабильности системы.
Как работает система пользователей в CentOS 8
Прежде чем копипастить команды, давайте разберёмся с архитектурой. В Linux каждый пользователь имеет уникальный идентификатор (UID), принадлежит к одной или нескольким группам (GID), и его данные хранятся в нескольких ключевых файлах:
- /etc/passwd — основная информация о пользователях
- /etc/shadow — хеши паролей и настройки безопасности
- /etc/group — информация о группах
- /etc/gshadow — пароли групп и их администраторы
В CentOS 8 используется диапазон UID от 1000 для обычных пользователей, а системные аккаунты занимают диапазон от 1 до 999.
Добавление пользователей: от простого к сложному
Самый простой способ добавить пользователя — использовать команду useradd
:
# Базовое добавление пользователя
sudo useradd username
# Добавление с созданием домашней директории
sudo useradd -m username
# Добавление с указанием shell
sudo useradd -m -s /bin/bash username
# Добавление с указанием группы
sudo useradd -m -g users -s /bin/bash username
# Добавление с дополнительными группами
sudo useradd -m -g users -G wheel,docker username
# Добавление с указанием UID
sudo useradd -m -u 1500 username
# Добавление с комментарием
sudo useradd -m -c "John Doe" username
Но это только верхушка айсберга. Вот продвинутые варианты:
# Добавление пользователя с ограниченным сроком действия
sudo useradd -m -e 2024-12-31 username
# Создание системного пользователя (без домашней директории)
sudo useradd -r serviceuser
# Создание пользователя с заблокированным паролем
sudo useradd -m -L username
# Создание пользователя с предустановленным паролем
sudo useradd -m -p $(openssl passwd -1 'password') username
Практические кейсы и примеры
Рассмотрим типичные сценарии, с которыми вы столкнётесь в реальной работе:
Сценарий | Команда | Комментарий |
---|---|---|
Веб-разработчик | sudo useradd -m -G wheel,apache -s /bin/bash developer |
Доступ к sudo и файлам Apache |
Сервисный аккаунт | sudo useradd -r -s /bin/false nginx |
Без shell и домашней директории |
Временный пользователь | sudo useradd -m -e 2024-06-01 temp_user |
Автоматическое отключение через месяц |
Контейнерный пользователь | sudo useradd -m -G docker containeruser |
Для работы с Docker без sudo |
Удаление пользователей: не так просто, как кажется
Удаление пользователя — это не просто userdel username
. Нужно учитывать множество факторов:
# Простое удаление (данные остаются)
sudo userdel username
# Удаление с домашней директорией
sudo userdel -r username
# Принудительное удаление (даже если пользователь залогинен)
sudo userdel -f username
# Удаление с домашней директорией и почтовым спулом
sudo userdel -r -f username
Но перед удалением обязательно проверьте:
# Активные процессы пользователя
sudo ps -u username
# Файлы пользователя в системе
sudo find / -user username -type f 2>/dev/null
# Cron-задачи
sudo crontab -u username -l
# Активные соединения
sudo lsof -u username
Автоматизация и скрипты
Для массового управления пользователями можно создать удобные скрипты:
#!/bin/bash
# Скрипт для массового добавления пользователей
USERS_FILE="/tmp/users.txt"
DEFAULT_PASSWORD="TempPass123!"
while IFS=',' read -r username fullname groups; do
# Создание пользователя
sudo useradd -m -c "$fullname" -G "$groups" "$username"
# Установка пароля
echo "$username:$DEFAULT_PASSWORD" | sudo chpasswd
# Принудительная смена пароля при первом входе
sudo chage -d 0 "$username"
echo "Пользователь $username создан"
done < "$USERS_FILE"
Пример файла пользователей:
# users.txt
john,John Doe,wheel,developers
jane,Jane Smith,developers
bob,Bob Johnson,wheel,docker
Продвинутые техники и хитрости
Несколько полезных трюков от опытных админов:
Создание шаблона пользователя
# Создание шаблона в /etc/skel
sudo mkdir -p /etc/skel/.config
sudo cp /path/to/default/config /etc/skel/.config/
# Все новые пользователи получат этот шаблон
sudo useradd -m newuser
Массовое удаление пользователей
# Удаление всех пользователей с UID больше 2000
awk -F: '$3 > 2000 { print $1 }' /etc/passwd | while read user; do
sudo userdel -r "$user"
done
Создание пользователя с предустановленным SSH-ключом
#!/bin/bash
USERNAME="developer"
SSH_KEY="ssh-rsa AAAAB3NzaC1yc2E..."
sudo useradd -m -s /bin/bash "$USERNAME"
sudo mkdir -p /home/"$USERNAME"/.ssh
echo "$SSH_KEY" | sudo tee /home/"$USERNAME"/.ssh/authorized_keys
sudo chmod 700 /home/"$USERNAME"/.ssh
sudo chmod 600 /home/"$USERNAME"/.ssh/authorized_keys
sudo chown -R "$USERNAME":"$USERNAME" /home/"$USERNAME"/.ssh
Альтернативные инструменты
Помимо стандартных команд, существуют альтернативные решения:
- adduser — более дружелюбная оболочка для useradd (в некоторых дистрибутивах)
- system-config-users — графический интерфейс для управления пользователями
- Ansible — для автоматизации управления пользователями через модуль
user
- LDAP/Active Directory — для централизованного управления в корпоративной среде
Официальная документация доступна на Red Hat Customer Portal.
Мониторинг и аудит
Важно отслеживать изменения в системе пользователей:
# Логи аутентификации
sudo tail -f /var/log/secure
# Последние входы пользователей
lastlog
# Активные сессии
who
# История команд sudo
sudo cat /var/log/sudo
# Создание алерта на добавление пользователя
echo 'useradd' >> /etc/rsyslog.d/user-monitor.conf
Безопасность и рекомендации
Несколько критически важных моментов:
- Никогда не удаляйте системных пользователей (UID < 1000)
- Всегда делайте бэкап файлов /etc/passwd и /etc/shadow перед массовыми операциями
- Используйте сильные пароли и принудительную смену при первом входе
- Регулярно аудируйте список активных пользователей
- Отключайте неактивные аккаунты вместо удаления
# Отключение пользователя вместо удаления
sudo usermod -L username
sudo usermod -s /bin/false username
# Блокировка с датой истечения
sudo usermod -L -e 1 username
Интеграция с современными технологиями
В эпоху DevOps управление пользователями часто интегрируется с:
- Docker — создание пользователей для контейнеров
- Kubernetes — ServiceAccounts и RBAC
- CI/CD pipelines — автоматическое создание пользователей для деплоя
- Terraform — инфраструктура как код включает управление пользователями
Пример Ansible playbook для управления пользователями:
---
- name: Manage users
hosts: servers
become: yes
vars:
users:
- { name: 'developer', groups: 'wheel,docker' }
- { name: 'tester', groups: 'testers' }
tasks:
- name: Create users
user:
name: "{{ item.name }}"
groups: "{{ item.groups }}"
state: present
createhome: yes
loop: "{{ users }}"
Заключение и рекомендации
Управление пользователями в CentOS 8 — это не просто набор команд, а комплексная система, которая требует понимания архитектуры, безопасности и автоматизации. Начинайте с базовых команд useradd
и userdel
, но не забывайте про продвинутые возможности и автоматизацию.
Основные принципы, которые стоит помнить:
- Планируйте структуру — определите политику именования и группировки заранее
- Автоматизируйте — используйте скрипты и инструменты оркестрации
- Мониторьте — ведите аудит изменений и активности
- Защищайте — используйте принципы минимальных привилегий
Правильно настроенная система пользователей — это фундамент для масштабируемой и безопасной инфраструктуры. Инвестируйте время в изучение этих основ, и они многократно окупятся в будущем.
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.