Какую среду я получаю от sudo?

Когда я запускаю sudo, что именно происходит с моей средой?

Когда я запускаю sudo command , она, похоже, не видит среду моего или root. Например, мой путь для обоих включает /usr/local/bin , но если я попытаюсь запустить одну из программ без полного пути, это не сработает.

  • Как безопасно передавать переменные в сценарии с поддержкой root?
  • Являются ли переменные среды видимыми для непривилегированных пользователей в Linux?
  • Корневой доступ, который не может изменить пароль root?
  • Почему расширение параметра bash не работает внутри системных файлов systemd?
  • Вызов скрипта с sudo игнорирует shebang
  • Я случайно удалил файл sudoers в Mac OS X; есть ли способ его восстановить?
  • Я думал, что судо побежал как корень, и, следовательно, получил корневую среду. Есть ли другой способ, который bash выполняет в sudo, чем под root или мой обычный пользователь?

    РЕДАКТИРОВАТЬ:

    В последнее время я использую sudo -i , но в последнее время это вызывает проблемы, потому что мой текущий рабочий каталог устанавливается в /root . Это как ожидалось (sorta), но я до сих пор не понимаю, почему sudo не распознает мои исполняемые файлы в /usr/local/bin .

    РЕДАКТИРОВАТЬ:

    Я запускаю Fedora 15.

  • Bash - оболочка vs переменная среды
  • Почему sudo env не показывает все переменные среды?
  • Почему переменные PATH отличаются при запуске через sudo и su?
  • Предотвратите доступ пользователя sudo к определенной папке и файлам
  • правильная настройка visudo NOPASSWD для сценария резервного копирования bash
  • Почему vim не применяет эти цветовые переменные в моей конфигурации?
  • 4 Solutions collect form web for “Какую среду я получаю от 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-файлов.

    Вы можете проверить это довольно легко с такими вещами, как

    Сравните результаты с

     sudo env env 

    И такие вещи, как

     sudo whoami whoami 

    Таким образом, вы можете попытаться выяснить, чего не хватает в настройках.

    Команда sudo -i моделирует начальный логин. В моей системе Debian также говорится, что:

    Это означает, что файлы ресурсов, зависящие от пользователя, такие как .profile или .login, будут прочитаны оболочкой. Если задана команда, она передается оболочке для выполнения. В противном случае выполняется интерактивная оболочка. sudo пытается перейти в домашний каталог этого пользователя перед запуском оболочки. Он также инициализирует среду, оставляя DISPLAY и TERM без изменений, устанавливая HOME, MAIL, SHELL, USER, LOGNAME и PATH, а также содержимое / etc / environment в системах Linux и AIX. Все остальные переменные среды удаляются.

    Вы можете настроить параметр env_keep sudo чтобы включить PATH , хотя вы должны помнить о том, как это влияет на безопасность.

     visudo 

    … запустит ваш $EDITOR , тогда вы можете внести изменения в значения по Defaults env_keep = … по мере необходимости.

    Кроме того, вы можете добавить / usr / local / bin на путь к системе, добавив файлы в /etc/profile.d .

    например:

     cat <<EOF > /etc/profile.d/tjameson.sh export PATH=$PATH:/usr/local/bin EOF 
    Linux и Unix - лучшая ОС в мире.