sudo (-E) не сохраняет путь, даже когда настроено соответственно

Мне установили цирк в Python virtualenv использующий virtualenvwrapper, и я хочу выполнить его с sudo. Звучит простым, правильно? К сожалению, даже после чтения man sudo и man sudoers, Я не преуспеваю в том, чтобы заставить ПУТЬ обычного пользователя придерживаться после sudo. (Хрипящий) Debian 7.8.

Вот/etc/sudoers:

deploy@devops:~$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
Defaults    !env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root    ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d
deploy ALL=(ALL) NOPASSWD:ALL

Вот ПУТЬ обычного пользователя:

deploy@devops:~$ echo $PATH
/home/deploy/.nix-profile/bin:/home/deploy/.nix-profile/sbin:/home/deploy/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Теперь давайте активируем virtualenv и проверим, что он изменил ПУТЬ:

deploy@devops:~$ workon circus

(circus)deploy@devops:/srv/circus/project$ echo $PATH
/home/deploy/.virtualenvs/circus/bin:/home/deploy/.nix-profile/bin:/home/deploy/.nix-profile/sbin:/home/deploy/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Отлично. Теперь давайте посмотрим то, что получает корень пути:

(circus)deploy@devops:/srv/circus/project$ sudo su
root@devops:/srv/circus/project# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Что случилось? Почему это использует secure_path? Я инвертировал env_reset с восклицательным знаком. sudo -E выставки точно то же поведение, и если я делаю export FOO=bar затем sudo su и echo $FOO, Я действительно получаю панель...

Очень печальный, и благодарный за любую справку. Счастливый разъясниться, не ли это ясно.

0
задан 12 August 2015 в 20:33
1 ответ

Понял, я уже пробовал sudo env "PATH=$PATH", как упоминалось в комментарии @william, но, к сожалению, забыл выйти из редактора visudo, поэтому сохранил файл .tmp. blush

Короче говоря, установка Defaults !env_reset и использование sudo env "PATH=$PATH" работает хорошо. Спасибо за комментарии.

1
ответ дан 4 December 2019 в 16:51

Теги

Похожие вопросы