Ошибка корневых команд OpenSuse


1

Может кто-нибудь объяснить, почему эти команды не работают

me@suse:~> ifconfig
Absolute path to 'ifconfig' is '/sbin/ifconfig', so running it may require superuser privileges (eg. root).

,

me@suse:~> sudo ifconfig
root's password:
sudo: ifconfig: command not found

И почему эти работы

me@suse:~> sudo /sbin/ifconfig

,

suse:/home/me # ifconfig

Я знаю, что-то связано с пользователем root, но я хочу лучшего объяснения.

Ответы:


3

Обычно пользователь с UID 0 (т. Е. Root) имеет модифицированный $PATHнабор, который включает в себя такие каталоги, как /sbinи /usr/sbin, в то время как у «обычного» пользователя их нет (так как многие программы в этих каталогах требуют привилегий суперпользователя и не очень пригодны для этих целей. нормальные пользователи в любом случае). Таким образом, если обычный пользователь хочет вызвать что-либо в тех каталогах, которые отсутствуют в его $PATH, он должен указать полный путь к программе, в то время как «root» может вызывать их без этой необходимости.

Вызов sudo <program>также не работает, потому sudoчто наследует свое окружение (и, следовательно, $PATH) от вызывающего процесса (который непривилегирован и, следовательно, отсутствует /sbin).

Вы можете попробовать это, вызвав echo $PATHодин из них в оболочке вашего пользователя и один раз в root-shell (не с sudo).


Я только что добавил / usr / sbin в PATH и теперь он работает. Спасибо за ваше объяснение.
Александр Виченци

я задаюсь вопросом: как suse знает абсолютный путь к файлу, который не находится в $ PATH?
Питер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.