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, но я хочу лучшего объяснения.

1 ответ1

3

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .