Команда не найдена после su: usermod, adduser, reboot
Наберите su - с минусом вместо su:
exit
su -
usermod -aG sudo ivanexit выходит из сеанса, открытого командой su без минуса, su - открывает сеанс root заново — теперь usermod, adduser, visudo и другие команды администратора находятся.
Почему так происходит
Оболочка ищет программы в папках, перечисленных в переменной PATH. У обычного пользователя Debian в ней нет /usr/sbin и /sbin — там лежат программы для администратора. Посмотреть свой список:
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, поэтому в старых инструкциях минус часто пропущен.
Другие способы
- Указать полный путь:
/usr/sbin/usermod -aG sudo ivan— сработает и послеsuбез минуса. - Если
sudoнастроен, пользоваться им:sudo usermod -aG sudo petr.sudoищет программы и в/usr/sbin(настройкаsecure_pathв/etc/sudoers).
То же у обычного пользователя
Без su и sudo обычный пользователь тоже получит «команда не найдена» на usermod, reboot, sshd или iptables. Здесь причина та же — /usr/sbin нет в PATH, — но добавлять папку в PATH смысла нет: эти команды всё равно требуют прав root. Запускайте их через sudo.
Если же «команда не найдена» отвечает и root после su -, значит, программа не установлена. Какой пакет её содержит, подскажет справка Какой пакет содержит файл. Например, ifconfig в Debian по умолчанию нет: он в пакете net-tools, а вместо него принято использовать ip a.