Когда я запускаю sudo, что именно происходит с моим окружением?
Когда я бегу sudo command
, он, кажется, не видит среду моего или root. Например, мой путь к обоим включает /usr/local/bin
, но если я пытаюсь запустить одну из программ без полного пути, она терпит неудачу.
Я думал, что sudo запускается как root, и, следовательно, получил среду root. Есть ли другой способ выполнения bash под sudo, чем под root или моим обычным пользователем?
РЕДАКТИРОВАТЬ:
Я использовал в sudo -i
последнее время, но в последнее время это вызывает проблемы, потому что мой текущий рабочий каталог установлен в /root
. Это как и ожидалось (Сорта), но я все еще не понимаю, почему sudo не распознает мои исполняемые файлы /usr/local/bin
.
РЕДАКТИРОВАТЬ:
Я использую Fedora 15
sudo
environment-variables
beatgammit
источник
источник
PATH
, и иногда нелегко найти, кто его переопределяет последним. Это может быть какая-то системная настройка (например, в PAM), сама sudo или последующий скрипт профиля.Ответы:
Я не знаю о настройках по умолчанию в Fedora, но в Debian по
sudo
умолчанию используетсяsecure_path
опция со значением по умолчанию/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
.Это означает, что путь меняется на это значение каждый раз, когда вы используете
sudo
; но при использованииsudo -i
путь изменяется после этого файлами RC пользователя root.источник
secure_path
варианте. По умолчанию не включены/usr/local/bin
в мою установку. Спасибо, это действительно помогло прояснить ситуацию!Вы можете проверить это довольно просто с такими вещами, как
Сравните вывод из
И тому подобное
Таким образом, вы можете попытаться выяснить, чего не хватает в вашей настройке.
источник
/usr/local/bin
не в моем sudo env, но это в моем корневом env и env пользователя. Почему это?root
, как и ожидалось. Что может быть причиной того, что мой sudo env отличается от моего корневого env?/usr/local/bin
путь root (к сожалению, мне пришлось делать это вручную)?Команда
sudo -i
имитирует начальный вход в систему. В моей системе Debian также указано, что:источник
Вы можете настроить
sudo
«senv_keep
параметр , чтобы включитьPATH
, хотя вы должны иметь в виду последствия для безопасности сделать это.... запустит ваш
$EDITOR
, затем вы можете внести изменения вDefaults env_keep =
... по мере необходимости.Кроме того, вы можете добавить / usr / local / bin в системный путь, добавив файлы в
/etc/profile.d
.например:
источник
sudo
имеет специальную обработку,PATH
так что вы не должны этого делать.