.png)
Так что я не понимаю, что здесь происходит.
Я установил сервер Debian 10.2 и настроил его так же, как и другие серверы. Все работает отлично, и поскольку это локальная машина, и я единственный пользователь, я использовал root для всего. Теперь я хотел отключить ssh root-login.
Но если я использую пользователя без прав root для входа через SSH, он не может найти основные команды, такие как «service» или «reboot». (Bash: Service: Command not found.)
Еще более странно, я даже не могу получить доступ к этим вещам, когда использую "su root". Я действительно пользователь root, но все равно не могу получить доступ/найти эти команды.
При входе в систему напрямую как пользователь root все работает как надо.
решение1
Переменная окружения вашего пользователя PATH
не содержит путь, где находятся эти файлы. Когда вы используете su -
, переменные окружения root загружаются в ваш сеанс. Смотрите man su
:
-, -l, --login
Start the shell as a login shell with an environment similar
to a real login:
o clears all the environment variables except TERM and
variables specified by --whitelist-environment
o initializes the environment variables HOME, SHELL,
USER, LOGNAME, and PATH
o changes to the target user's home directory
o sets argv[0] of the shell to '-' in order to make
the shell a login shell
Чтобы лучше это понять, давайте посмотрим, где находится один из этих двоичных файлов, и сравним PATH пользователя root с вашим:
- делать
su -
- do
which service
. Это скажет вам, откудаservice
будет загружен двоичный файл, если вы выполните командуservice
. - do
echo $PATH
. Это покажет вам PATH root. Вы заметите, что каталог, гдеservice
можно найти, указан здесь. - сделать
exit
, чтобы снова стать не-root пользователем. - do
echo $PATH
. Вы увидите, что каталога, который вы указали на шаге 2, здесь нет.
Это обычная настройка по умолчанию в определенных средах/дистрибутивах, где определенные административные программы, такие как service
, fdisk
и т. д., хранятся в каталоге, например /usr/sbin
или /sbin
, при этом такие каталоги находятся вне PATH обычных пользователей.