Чтобы система оставалась в безопасности, важно правильно настроить права пользователей. Рассказываем, как создать пользователя в Ubuntu и управлять его правами, а также какие меры принять, чтобы минимизировать риски от кражи учётных данных.
Управление пользователями и их правами — фундамент безопасности любой системы, особенно если речь идёт о VPS. Неправильно настроенные аккаунты могут стать лазейкой для атак: например, если злоумышленник получит доступ к учётной записи с привилегиями sudo, он сможет удалить критичные файлы или установить вредоносное ПО. В этой статье разберём, как создать пользователей в Ubuntu 22.04, гибко управлять их правами и минимизировать риски, даже если учётные записи будут скомпрометированы.
Зачем создавать пользователей с ограниченными правами
Каждый аккаунт в Linux — это изолированная среда, из которой недоступно внешнее окружение. Когда пользователь работает под учётной записью без прав sudo, случайный запуск скрипта с rm -rf / не уничтожит систему. Многие службы, в том числе Nginx или MySQL, также должны работать под отдельными пользователями, чтобы ограничить последствия взлома. Например, если злоумышленник взломает аккаунт без привилегий, он не сможет установить бэкдоры в /usr/bin, — он получит доступ только к части файлов и не сможет заполучить контроль над системой. Если права пользователей не ограничены, под угрозой окажется вся система. К тому же подавляющему большинству пользователей не нужен полный доступ к системным настройкам, поэтому ограничения в правах не нарушают нормальную работу системы.
Как создать пользователя в Ubuntu 22.04
Добавление через adduser
Утилита adduser — самый простой способ. Она автоматически создаёт домашнюю директорию, назначает оболочку (/bin/bash) и запрашивает дополнительные данные (например, имя).
sudo adduser devuser --gecos "Developer Account"
Где:
- devuser — имя учётной записи;
- --gecos — параметр для заполнения комментариев (обычно полное имя, рабочий телефон или другая контактная информация).
Система попросит задать пароль. Лучше использовать длинные фразы вместо коротких комбинаций. Например, можно использовать метод correct-horse-battery-staple (сочетание случайных слов).
Проверьте, создан ли пользователь:
grep username /etc/passwd
Вывод будет содержать UID, GID и путь к домашней директории (/home/devuser).
Ручная настройка через useradd
Для нестандартных сценариев (например, пользователь без домашней директории) используйте useradd:
sudo useradd -M -s /usr/sbin/nologin serviceuser
Здесь:
- -M — не создавать /home/serviceuser,
- -s /usr/sbin/nologin — запретить вход в систему (полезно для системных служб),
- serviceuser — имя.
Такой пользователь подходит для запуска демонов. Например, если Nginx работает от serviceuser, даже при уязвимости в веб-сервере злоумышленник не получит доступ к оболочке.
Группы: как управлять правами для целых команд
Группы упрощают массовую выдачу прав. Например, все разработчики могут входить в группу developers с доступом к каталогу /var/www.
Встроенные группы:
- sudo — разрешает выполнение команд с правами root.
- adm — доступ к логам в /var/log.
- www-data — стандартная группа для веб-серверов.
Создание своей группы:
sudo groupadd developers
sudo usermod -aG developers devuser
Здесь используется ключ -aG, чтобы добавить пользователя в новую группу без удаления из уже существующих. Если опустить -a, пользователь devuser будет исключён из всех остальных групп.
Проверьте членство:
groups devuser
Тонкая настройка прав: chmod и sudoers
Права на файлы и директории
Разрешения в Linux задаются через три категории: владелец, группа, остальные. Они могут быть представлены в виде чисел. Например, чтобы установить права на директорию:
chmod 750 /var/www/project
Где:
- 7 (владелец): чтение + запись + выполнение (4+2+1),
- 5 (группа): чтение + выполнение (4+1),
- 0 (остальные): никаких прав.
Чтобы назначить владельца и группу:
sudo chown devuser:developers /var/www/project
Теперь devuser имеет максимальные права, а другие члены его группы имеют права на чтение и выполнение. Остальные пользователи не имеют доступа.
Ограничение sudo
Полный доступ к sudo опасен. Лучше разрешать только конкретные команды. Редактируйте файл /etc/sudoers через visudo (открывает его по умолчанию), так как эта утилита проверяет синтаксис. Никогда не редактируйте /etc/sudoers напрямую через nano или vim: ошибка синтаксиса может заблокировать доступ к sudo для всех пользователей:
sudo visudo
Добавьте строку:
devuser ALL=(ALL) NOPASSWD: /usr/bin/apt, /usr/bin/systemctl restart nginx
Здесь:
- ALL — на каких хостах действует правило (актуально в сетевых конфигурациях). Для локальной машины оставьте ALL.
- (ALL) — от имени какого пользователя разрешено выполнять команды. Например, (postgres) позволит запускать команды от имени пользователя postgres. Значение (ALL) означает «от любого пользователя», включая root.
- NOPASSWD — отключение запроса пароля. Пользователь может выполнять команды без ввода своего пароля. Используйте только для доверенных аккаунтов.
- /usr/bin/apt — разрешает выполнять apt (управление пакетами).
- /usr/bin/systemctl restart nginx — разрешает только перезапуск Nginx через systemctl.
Теперь devuser сможет обновлять пакеты и перезапускать Nginx, но не сможет удалить системные файлы через rm.
Безопасность аккаунтов: пароли, блокировки и мониторинг
Политика паролей
Установите libpam-pwquality для сложных паролей:
sudo apt install libpam-pwquality
Настройте правила в /etc/security/pwquality.conf:
minlen = 12
difok = 5
maxrepeat = 3
Здесь:
- minlen — минимальная длина пароля,
- difok — минимум 5 символов, отсутствующих в старом пароле,
- maxrepeat — не более 3 повторяющихся символов подряд.
Блокировка при подборе пароля
Используйте faillock, чтобы блокировать аккаунт после 5 неудачных попыток входа. Добавьте в /etc/pam.d/common-auth:
auth required pam_faillock.so preauth silent audit deny=5 unlock_time=600
auth [default=die] pam_faillock.so authfail audit deny=5 unlock_time=600
И в /etc/pam.d/common-account:
account required pam_faillock.so
SSH: отключение root и парольной аутентификации
В /etc/ssh/sshd_config измените:
PermitRootLogin no
PasswordAuthentication no
Перезагрузите службу:
sudo systemctl restart sshd
Это разрешит вход только по ключам. Не забудьте предварительно создать ключи и добавить публичный ключ в
~/.ssh/authorized_keys
для пользователя.
Дополнительные меры защиты
Срок действия пароля
Установите максимальный срок жизни пароля (например, 90 дней):
sudo chage -M 90 devuser
Проверьте настройки:
sudo chage -l devuser
Аудит активности
Просмотр истории входов пользователей:
last
Или:
journalctl _SYSTEMD_UNIT=sshd.service
Мониторинг использования sudo:
grep sudo /var/log/auth.log
Установите auditd для детального отслеживания:
sudo apt install auditd
sudo auditctl -w /etc/sudoers -p wa -k sudoers_change
Заключение
Теперь вы знаете, как создавать пользователей в Ubuntu 22.04, управлять их правами через chmod и sudoers и защищать аккаунты от угроз. Вы научились:
- Настраивать изолированные учётные записи для сервисов и разработчиков;
- Ограничивать доступ к критичным командам;
- Блокировать подбор паролей и настраивать SSH-аутентификацию.
Регулярно проверяйте, кто входит в группу sudo (getent group sudo), и удаляйте лишние аккаунты.
Читайте в блоге:
- Как назначить статический IP-адрес в Ubuntu 22.04
- Как включить и настроить брандмауэр UFW в Ubuntu 22.04
- Установка и настройка Apache на Ubuntu 22.04 LTS и Debian 12
- Как защитить Apache с помощью Let's Encrypt в Ubuntu 20.04 и 22.04
- Установка Java на Ubuntu 22.04 через Apt: полное руководство