Утро понедельника. Вам в чат прилетает три сообщения подряд:

«Привет! Я новый фронтендер, создай мне учётку на сервере — alice.»

«Добавь alice в группу developers, ей нужен доступ к /var/www/project.»

«И ещё: bob уволился в пятницу, убери его из системы, пожалуйста.»

Три задачи. В прошлом уроке мы разобрались, где Linux хранит информацию о пользователях — /etc/passwd, /etc/group, UID, GID. Теперь — как этой информацией управлять. Руками, через терминал, как настоящий админ.

Все команды в этом уроке требуют прав суперпользователя, поэтому перед каждой — sudo. Начнём с создания пользователя. И тут вас ждёт первый сюрприз: в Linux для этого есть две команды с почти одинаковыми названиями. Новичков это сбивает с толку каждый раз.

sudo useradd alice
sudo adduser alice

Одни и те же буквы, только порядок слов другой. Но разница — колоссальная:

useradd adduser
Тип Низкоуровневая утилита Интерактивный скрипт-обёртка
Домашняя папка Не создаёт (без флага -m) Создаёт автоматически
Пароль Не запрашивает Запрашивает сразу
Оболочка Может не назначить Назначает /bin/bash
Где работает Везде (POSIX) Debian/Ubuntu

Если коротко: adduser — «сделай всё за меня». useradd — «я сам разберусь, дай мне рычаги».

Давайте создадим пользователя обоими способами и посмотрим разницу на практике.

Способ 1: adduser — как заказать пиццу по телефону

Вы звоните, оператор задаёт вопросы, вы отвечаете — пицца приезжает:

sudo adduser alice

Система запустит диалог:

Adding user 'alice' ...
Adding new group 'alice' (1001) ...
Adding new user 'alice' (1001) with group 'alice' ...
Creating home directory '/home/alice' ...
Copying files from '/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Full Name []: Alice Johnson
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y

Одна команда — и пользователь полностью готов: домашняя папка, пароль, оболочка. Поля Room Number и прочее можно пропускать через Enter — они необязательные и из 80-х (тогда в университетах указывали номер комнаты сотрудника).

Способ 2: useradd — как собрать пиццу самому

Каждый ингредиент выбираете сами:

sudo useradd -m -s /bin/bash -c "Bob Smith" bob

Что здесь написано?

  • -m — создать домашнюю директорию /home/bob. Без этого флага — пользователь будет, а папки не будет. Сюрприз.
  • -s /bin/bash — назначить оболочку bash. Без этого на некоторых системах получите /bin/sh или вообще ничего.
  • -c "Bob Smith" — полное имя (запишется в поле GECOS в /etc/passwd).

И пароль — отдельной командой:

sudo passwd bob

Система дважды попросит ввести пароль. Теперь bob может входить в систему.

Проверим, что оба пользователя на месте:

grep alice /etc/passwd
# alice:x:1001:1001:Alice Johnson:/home/alice:/bin/bash

grep bob /etc/passwd
# bob:x:1002:1002:Bob Smith:/home/bob:/bin/bash

ls /home/
# alice  bob  user

Оба в /etc/passwd, у обоих есть домашние директории. Результат одинаковый — способ разный. Отлично, пользователи есть. Теперь — группы. Помните пример из прошлого урока? Три разработчика, общий проект, и 777 — это не выход. Давайте сделаем правильно.

Создаём группу:

sudo groupadd webdev

Проверяем:

grep webdev /etc/group
# webdev:x:1003:

Группа создана, GID = 1003, участников пока нет — пустота после последнего двоеточия. Исправим это:

sudo usermod -aG webdev alice
sudo usermod -aG webdev bob

Проверяем:

grep webdev /etc/group
# webdev:x:1003:alice,bob

Оба на месте. Разберём эту важнейшую команду usermod -aG по буквам — она будет встречаться вам постоянно:

  • usermod — изменить параметры пользователя.
  • -G webdev — задать дополнительную группу.
  • -a (append) — добавить к существующим группам, а не заменить их.

Посмотрим, как выглядит результат глазами alice:

groups alice
# alice : alice webdev

id alice
# uid=1001(alice) gid=1001(alice) groups=1001(alice),1003(webdev)

Две группы: основная alice (создана автоматически вместе с пользователем) и дополнительная webdev (добавили вручную). Теперь alice имеет доступ ко всем файлам с группой-владельцем webdev.

usermod умеет не только добавлять в группы. Это швейцарский нож для изменения пользователей:

Команда Что делает
sudo usermod -l newname oldname Переименовать пользователя
sudo usermod -d /new/home -m user Сменить домашнюю папку (и переместить файлы)
sudo usermod -s /bin/zsh user Сменить оболочку
sudo usermod -L user Заблокировать учётную запись (Lock)
sudo usermod -U user Разблокировать учётную запись (Unlock)

Блокировка (-L) — хитрая штука. Она не удаляет пользователя, а просто ставит ! перед хешем пароля в /etc/shadow. Человек не может войти, но все его файлы и настройки на месте. Удобно, когда сотрудник ушёл в отпуск или под вопросом — удалять рано, а доступ нужно закрыть прямо сейчас. Теперь — удаление. Помните сообщение из начала урока? «Bob уволился, убери его из системы.» Делается просто:

sudo userdel bob

Это удалит пользователя из /etc/passwd и /etc/shadow, но не тронет его домашнюю директорию. Файлы останутся в /home/bob — вдруг понадобятся. Если нужно удалить всё с концами — добавьте флаг -r:

sudo userdel -r bob

Пользователь, домашняя папка, почтовый ящик — стёрты. Как будто bob'а никогда не было.

Удаление группы — аналогично:

sudo groupdel webdev

Но есть нюанс: группу нельзя удалить, если она является основной для какого-то пользователя. Сначала смените ему группу — потом удаляйте.

Соберём всё вместе. Вернёмся к тем трём сообщениям из начала урока — и решим каждую задачу:

# Задача 1: создать учётку для alice
sudo adduser alice

# Задача 2: дать доступ к проекту
sudo usermod -aG developers alice

# Задача 3: удалить bob'а
sudo tar czf /backup/bob_home.tar.gz /home/bob   # на всякий случай
sudo userdel -r bob

# Бонус: проверить, что всё в порядке
id alice
# uid=1001(alice) gid=1001(alice) groups=1001(alice),1001(developers)

grep bob /etc/passwd
# (пусто — bob'а больше нет)

Три задачи — пять минут работы. Утренний кофе ещё не остыл. И напоследок — шпаргалка, которую стоит держать под рукой, пока команды не запомнятся сами:

Задача Команда
Создать пользователя (интерактивно) sudo adduser имя
Создать пользователя (скрипт) sudo useradd -m -s /bin/bash имя
Задать/сменить пароль sudo passwd имя
Создать группу sudo groupadd имя
Добавить в группу sudo usermod -aG группа имя
Посмотреть группы groups имя или id имя
Удалить пользователя sudo userdel -r имя
Удалить группу sudo groupdel имя

В следующем уроке — пакетный менеджер на продвинутом уровне: откуда apt берёт программы, как откатить сломавшее всё обновление и что делать, когда нужного пакета нет в стандартном списке.

useradd — низкоуровневая команда создания пользователя. Требует явного указания параметров (-m, -s, -c).

adduser — интерактивная обёртка над useradd (Debian/Ubuntu). Создаёт домашнюю папку, запрашивает пароль, назначает оболочку — всё за один раз.

passwd — задаёт или меняет пароль пользователя.

usermod -aG — добавляет пользователя в дополнительную группу. Флаг -a обязателен, без него группы заменяются, а не дополняются.

userdel -r — удаляет пользователя вместе с домашней директорией. Без -r файлы остаются.

groupadd / groupdel — создание и удаление групп.

Обсуждение урока

0
Комментарии видны всем. Чтобы участвовать в обсуждении, войдите или зарегистрируйтесь.
Модерация сообщества

Пожаловаться на комментарий

Расскажите модераторам, что именно требует внимания.