
Разбираем наиболее часто используемые команды в Debian с их описаниями и некоторыми нюансами использования. Расширенная информация доступна в манах, а для вас я собрал самые нужные кейсы использования. Ряд команд могут быть опасны в реальном окружении, поэтому экспериментируйте на безопасных инсталляциях.
Если интересуетесь ОС Debian, рекомендую обратиться к тегу Debian на моем блоге.
Debian. Шпаргалка сисадмина. Операции с пользователями
Для управления пользователями существует ряд основных команд:
- useradd — регистрирует нового пользователя или изменяет информацию по умолчанию о новых пользователях;
- usermod — изменяет учётную запись пользователя;
- userdel — удаляет учётную запись и файлы пользователя;
- passwd — изменяет пароль пользователя.
И некоторые другие. Далее небольшие примеры использования каждой команды.
useradd
Создаем пользователя test01 (без домашнего каталога и без пароля):
|
1 |
useradd test01 |
Но учтите, что голая команда даст оболочку /bin/sh, в которой у пользователя не будут работать стрелки и табуляция. Сменить её можно командой chsh -s /bin/bash test01.
Создаем пользователя test01 с домашним каталогом /home/test01:
|
1 |
useradd -m test01 |
- -m — создать домашний каталог пользователя
Если домашний каталог нужен в нестандартном месте, его путь задается ключом -d:
|
1 |
useradd -m -d /srv/app app |
- -d — домашний каталог новой учётной записи
Создаем пользователя testuser01 в группе testgroup01 с домашним каталогом, оболочкой /bin/bash и паролем Qwerty123:
|
1 2 |
groupadd testgroup01 useradd -g testgroup01 -m -s /bin/bash -p "$(openssl passwd -6 Qwerty123)" testuser01 |
- -g — имя или ID первичной группы новой учётной записи, группа должна существовать
- -s — оболочка новой учётной записи
- -p — зашифрованный пароль новой учётной записи
Обратите внимание, ключ -p ждет хеш пароля, а не сам пароль. Получить хеш можно командой openssl passwd -6, как в примере выше, или mkpasswd из пакета whois.
Надо отметить, что вводить пароль в открытом виде в командную строку не совсем правильно, лучше использовать две команды последовательно:
|
1 2 |
useradd -g testgroup01 -m -s /bin/bash testuser01 passwd testuser01 |
В этом случае вы устанавливаете пароль отдельной командой и он не запоминается в кэше командной строки, этот способ более предпочтителен.
useradd или adduser
В Debian вы также можете найти команду adduser. Она сама создает домашний каталог, копирует в него файлы из /etc/skel, ставит оболочку /bin/bash и спрашивает пароль:
|
1 |
adduser testuser01 |
Для ручной работы удобнее adduser, а в скриптах и системах автоматизации используйте useradd (в ней нет интерактивного режима и она делает ровно то, что явно задано ключами).
usermod
Смена имени пользователя testuser01 на testuser02:
|
1 |
usermod -l testuser02 testuser01 |
-l Имя пользователя будет изменено с testuser01 на testuser02. Больше ничего не меняется, домашний каталог и группа сохранят старое имя testuser01. А вот переименовать пользователя целиком с его окружением можно следующим образом:
|
1 2 |
usermod -l testuser02 -d /home/testuser02 -m testuser01 groupmod -n testuser02 testuser01 |
Изменение первичной группы пользователя testuser02 на группу testgroup02:
|
1 |
usermod -g testgroup02 testuser02 |
-g — Имя или числовой идентификатор новой первичной группы пользователя. Группа с таким именем должна существовать. Все файлы в домашнем каталоге пользователя, принадлежавшие предыдущей первичной группе пользователя, будут принадлежать новой группе. Группового владельца файлов вне домашнего каталога нужно изменить вручную.
Добавление пользователя testuser02 в дополнительную группу sudo:
|
1 |
usermod -aG sudo testuser02 |
Важно! Без ключа -a пользователь будет исключен из всех остальных дополнительных групп, включая sudo. Новая группа начнет действовать после повторного входа пользователя в систему.
Удаление пользователя testuser02 из группы docker:
|
1 |
gpasswd -d testuser02 docker |
Создание нового домашнего каталога /home/testuser02 пользователя testuser02 и перенос данных из старого в новый:
|
1 |
usermod -d /home/testuser02 -m testuser02 |
- -d — Домашний каталог нового пользователя. Если указан параметр -m, то содержимое текущего домашнего каталога будет перемещено в новый домашний каталог, который будет создан, если он ещё не существует.
- -m — Переместить содержимое домашнего каталога в новое место. Этот параметр можно использовать только с параметром -d. Команда usermod пытается изменить владельцев файлов и копирует права, ACL и расширенные атрибуты, но после неё всё равно могут потребоваться некоторые ручные действия.
Если у пользователя запущены процессы, usermod откажется менять имя, UID или домашний каталог:
|
1 |
usermod: user testuser01 is currently used by process 1234 |
Завершите процессы пользователя и повторите команду:
|
1 |
pkill -u testuser01 |
Владельца файлов crontab и заданий at придется изменить вручную.
userdel
Удаление пользователя testuser02. Домашний каталог и файлы в нем останутся нетронутыми:
|
1 |
userdel testuser02 |
Удаление пользователя testuser02 вместе с домашним каталогом и файлами в нем, а также почтового ящика, если он есть:
|
1 |
userdel -r testuser02 |
Файлы пользователя за пределами домашнего каталога, его crontab и правило в /etc/sudoers.d останутся на месте. Найти осиротевшие файлы (у которых больше нет владельца), можно следующим образом:
|
1 |
find / -xdev -nouser |
Правило sudo стоит удалить вручную, потому что с ним есть нюанс: пользователь, созданный позже с тем же именем, сразу получит старые права.
По аналогии с usermod, userdel откажется удалять пользователя с запущенными процессами. Завершите их командой pkill -u testuser02.
В Debian для удаления есть еще команда deluser, пара к adduser. Пользователя вместе с его домашним каталогом можно удалить вот так:
|
1 |
deluser --remove-home testuser02 |
Для удаления файлов утилите нужен пакет perl (без него увидим ошибку).
passwd
Задать пароль для учетной записи testuser02:
|
1 |
passwd testuser02 |
Логично, что обычный пользователь может изменить пароль только своей учётной записи, у рута ограничений нет.
В скриптах используйте пайп с передачей пароля команде chpasswd (читает пары имени и пароля из стандартного ввода):
|
1 |
echo 'testuser02:Qwerty123' | chpasswd |
Заставляем пользователя сменить пароль при следующем входе:
|
1 |
passwd -e testuser02 |
Отобразить состояние учетной записи (имя, состояние пароля, дата последнего изменения пароля, сроки действия пароля):
|
1 |
passwd -S testuser02 |
|
1 |
testuser02 P 2026-10-17 0 99999 7 -1 |
Второе поле показывает состояние пароля:
- P — пароль задан
- L — пароль заблокирован
- NP — пароля нет
Отображение состояния всех учетных записей:
|
1 |
passwd -S -a |
Блокируем пароль пользователя:
|
1 |
passwd -l testuser02 |
Помните, что passwd -l закрывает только вход по паролю, в то время как по ssh-ключу можно заходить как прежде. Чтобы закрыть вход полностью, задайте учетной записи истекший срок действия (вторая команда снимает это ограничение):
|
1 2 |
usermod -e 1 testuser02 usermod -e '' testuser02 |
Команда passwd -d удаляет пароль полностью. После этого в систему можно войти с пустым паролем.
Об основных командах все. Ниже есть информация о других вспомогательных командах, связанных с пользователями.
Дополнительные команды
- id — показывает UID, GID и группы указанного пользователя, без имени покажет текущего;
- groups — список групп пользователя;
- last, lastb — выводят список последних входов в систему и неудачных попыток входа.
А вот так можно отобразить информацию о трех последних входах в систему пользователя root:
|
1 |
last -n 3 root |
- lastlog — выводит отчёт о последней регистрации в системе всех или указанного пользователя
В Debian 13 команд last, lastb и lastlog больше нет 1. Утилиту last ставит пакет wtmpdb, вместо lastlog теперь lastlog2 из одноименного пакета, а неудачные попытки входа показывает lslogins:
|
1 |
lslogins --failed |
- logname — выводит имя, под которым пользователь вошел в систему;
- whoami — от кого выполняется текущая команда.
- su — изменяет ID пользователя или делает его суперпользователем
- sudo, sudoedit — выполняют команду от имени другого пользователя
Переключаться на root лучше командой с дефисом:
|
1 |
su - |
Без дефиса su оставляет переменные окружения пользователя, в том числе PATH без каталога /usr/sbin. В такой сессии административные команды не находятся:
|
1 |
bash: useradd: command not found |
Выполнить одну команду от имени root можно так (пример с установкой sudo):
|
1 |
su -c "apt-get install sudo" root |
Права на sudo в Debian получает любой участник группы sudo, добавить в нее пользователя можно командой usermod -aG из раздела выше. Иерархию правил удобно организовать отдельными файлами в каталоге /etc/sudoers.d. Но помните, что файлы с точкой в имени или которые заканчиваются на ~, sudo молча пропускает. Иными словами правило в файле deploy.conf работать не будет, а в файле deploy будет.
- users — выводит имена пользователей, которые сейчас находятся в системе;
- w — показывает, кто находится в системе и что делает;
- who — показывает, кто находится в системе.
Использованные источники:
- Linux-шпаргалка
- Программы и утилиты UNIX-подобных операционных систем в Debian — Управление системой
- Пользователи и группы
Notes:

