Глиф Учебники

Команда не найдена после su: usermod, adduser, reboot

Справочник · Debian · 1 минута чтения

Наберите su - с минусом вместо su:

Bash
exit
su -
usermod -aG sudo ivan

exit выходит из сеанса, открытого командой su без минуса, su - открывает сеанс root заново — теперь usermod, adduser, visudo и другие команды администратора находятся.

Почему так происходит

Оболочка ищет программы в папках, перечисленных в переменной PATH. У обычного пользователя Debian в ней нет /usr/sbin и /sbin — там лежат программы для администратора. Посмотреть свой список:

Bash
echo "$PATH"

Команда su без минуса делает вас root, но оставляет почти всё окружение прежнего пользователя, включая его PATH. Права уже есть, а usermod из /usr/sbin оболочка не находит:

Терминал
$ su
Пароль:
# usermod -aG sudo ivan
bash: usermod: команда не найдена

su - (полная форма — su --login) открывает сеанс root «с нуля», как при входе в систему: с его PATH, домашней папкой /root и настройками. До Debian 10 команда su была другой программой и всегда выставляла PATH root, поэтому в старых инструкциях минус часто пропущен.

Другие способы

То же у обычного пользователя

Без su и sudo обычный пользователь тоже получит «команда не найдена» на usermod, reboot, sshd или iptables. Здесь причина та же — /usr/sbin нет в PATH, — но добавлять папку в PATH смысла нет: эти команды всё равно требуют прав root. Запускайте их через sudo.

Если же «команда не найдена» отвечает и root после su -, значит, программа не установлена. Какой пакет её содержит, подскажет справка Какой пакет содержит файл. Например, ifconfig в Debian по умолчанию нет: он в пакете net-tools, а вместо него принято использовать ip a.