1
  • Например: я установил ifconfig
  • Сначала я получаю root с "su"
  • Теперь я пишу "ifconfig" и получаю: "команда не найдена".
  • Я пишу "sudo ifconfig", и теперь это работает.

Похоже, это происходит со многими программами (не со всеми).

Другой пример: apt-get неправильно устанавливает приложения, если я не использую тот же метод.

Мне не нужно писать sudo, если я уже root.

Это почему? Что я могу сделать, чтобы это исправить?

1 ответ1

4

TL, DR: используйте su --login или sudo .


Debian устанавливает другой PATH для обычных пользователей. В /etc/profile вы можете видеть, что значения по умолчанию резервируют /sbin для root:

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

type ifconfig говорит, что утилита находится в /sbin/ifconfig поэтому обычные пользователи не могут легко получить к ней доступ. Когда вы запускаете su без аргументов, среда вызывающего пользователя сохраняется, включая переменную PATH . sudo , с другой стороны, предоставляет новую среду и переопределяет PATH вызывающего пользователя.


Причина, по которой вы считаете, что su работает неправильно, заключается в том, что сброс PATH и IFS по умолчанию является устаревшим поведением. buster недавно переключился на реализацию util-linux su которая работает по-другому; см. /usr/share/doc/util-linux/NEWS.Debian.gz для получения подробной информации.

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