Вот ты поставил себе свежую Ubuntu (или тебе её воткнули на сервере, а ты теперь отвечаешь за этот зоопарк) — и тут сразу встаёт вопрос: как грамотно добавить нового пользователя, чтобы не дать ему сломать всё подряд, но и не ограничить настолько, что даже ls
не выполнит? В этой статье разберёмся, как создавать пользователей, выдавать им права sudo
, добавлять в группы и не наступить на грабли.
Почему это важно?
Казалось бы, что сложного: adduser
— и всё. Но если дать кому-то sudo
бездумно, можно получить весёлую историю на тему «а кто удалил /etc?». А если не дать нужных прав — человек не сможет даже обновить пакеты. Короче, правильная работа с пользователями — это базовый навык любого, кто трогает Linux-серверы.
Что требуется
- ОС: Ubuntu 20.04/22.04 LTS (или новее, но команды те же для большинства дистрибутивов)
- Доступ: root или пользователь с
sudo
- Железо: Любое, даже виртуалка на 512 МБ ОЗУ
Пошаговая инструкция: создание пользователя, sudo и группы
- Создаём пользователя
sudo adduser vasya
adduser
— более дружелюбная обёртка надuseradd
. Она сразу создаёт домашнюю директорию, спрашивает пароль и всякие данные. Можно просто нажимать Enter, если неохота заполнять поля. - Добавляем пользователя в группу
sudo
sudo usermod -aG sudo vasya
Классика. Группа
sudo
даёт права запускать команды от имени root черезsudo
. Без-aG
можно случайно выкинуть пользователя из всех групп, так что не забываем про-a
(append). - Проверяем, что всё ок
id vasya
В выводе должна быть
sudo
среди групп. - Выдаём права на другие группы (по необходимости)
sudo usermod -aG docker vasya
Если нужно, чтобы пользователь мог запускать Docker без
sudo
, добавляем в группуdocker
. Аналогично — дляwww-data
,adm
и т.д. - Проверяем sudo
su - vasya sudo whoami
Если всё хорошо, увидите
root
в выводе.
Использование: команды и варианты
- Создать пользователя без домашней директории:
sudo adduser --no-create-home bob
- Создать пользователя с определённым shell:
sudo adduser --shell /bin/zsh alice
- Добавить сразу в несколько групп:
sudo usermod -aG sudo,docker,adm vasya
- Посмотреть группы пользователя:
groups vasya
- Сделать пользователя админом только на определённые команды:
sudo visudo
— и прописываем, например:
vasya ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
- Удалить пользователя:
sudo deluser vasya
sudo deluser --remove-home vasya
— чтобы снести ещё и домашнюю папку.
Ошибки и как делать не надо
- Не давайте всем подряд
sudo
! Если вам просто нужен доступ к логам — добавьте пользователя вadm
илиjournalctl
. - Не используйте
useradd
без понимания, что он делает. Это низкоуровневая команда, она не создаёт домашнюю директорию по умолчанию и не настраивает всё какadduser
. - Не забывайте про
-a
вusermod -aG
. Без него вы перезапишете список групп пользователя. - Не редактируйте
/etc/sudoers
напрямую, используйтеvisudo
. Это спасёт от синтаксических ошибок и брика системы.
Реальный пример из жизни
Был у меня сервер, где надо было дать фронтендеру только права на перезапуск Nginx, чтобы не дергать меня по каждому чиху. Создал пользователя:
sudo adduser frontend
sudo usermod -aG www-data frontend
sudo visudo
В visudo
добавил строчку:
frontend ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
Всё, человек доволен — может деплоить и перезапускать сервис, а базу или систему не сломает.
Заключение
Управление пользователями и правами — не такая уж скучная тема, как кажется. Грамотная настройка экономит кучу времени и нервов, а ещё спасает от случайных (и не очень) фейлов. Не ленитесь читать man-страницы и гайды на официальном Ubuntu Community — там всегда есть что-то полезное. И помните: sudo
— это не игрушка!
Ваш отзыв