Intereting Posts
Уведомление программы о завершении сеанса X Не удалось переопределить JAVA-дом в opensuse 13.1 ошибка в порядке egrep Удаление пробелов и заголовков из таблицы сбрасываемой базы данных Mutt scripting: интерактивный диалоговый макрос с использованием `dialog` Ограничьте пропускную способность отдельных HTTP-запросов, не ограничивая общую пропускную способность Воспроизведение флэш-анимации в замедленном режиме в Linux Как использовать регулярное выражение BRE или ERE для соответствия шаблону, который не имеет определенной строки Перемещение Xen DomU на новое блочное устройство Установка инструментов VMware на Metasploitable2 Не удается войти из-за «дискового пространства» Беспроводная связь в Debian Squeeze Linux Mint – изменение настроек неэффективно (даже без перезагрузки) Измените переменную среды PATH моего профиля на Cygwin Могу ли я использовать modulecmd с раковиной?

Как сделать `sudo` сохранить $ PATH?

Мне нужно запустить программу, установленную в / opt / godi / sbin (пользовательский каталог). Если я добавлю этот каталог в свой PATH, добавив следующую строку в мой .bashrc-файл

export PATH=$PATH:/opt/godi/bin:/opt/godi/sbin 

то я могу попытаться выполнить команду просто отлично (за исключением того, что она терпит неудачу, потому что ей нужно sudo). Однако, когда я пытаюсь использовать sudo:

 sudo godi_console 

Я получаю следующую ошибку

 sudo: godi_console: command not found 

Проверка переменной PATH после использования sudo показывает, что она не включает тот же PATH, что и у обычного пользователя:

 $ sudo sh # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 

Почему ПУТЬ не то же самое? Я делаю что-то неправильно? Я на Debian Jessie и, к сожалению, не могу обойти проблему, передав sudo абсолютную ссылку на godi_console, потому что сама godi_console также зависит от правильной установки PATH.

Вы всегда можете:

 sudo env "PATH=$PATH" godi_console 

или даже:

 sudo "PATH=$PATH" godi_console 

поскольку sudo обрабатывает ведущие аргументы, содержащие = символы как назначения переменных среды сами по себе.

В качестве меры безопасности на Debian, /etc/sudoers имеет параметр secure_path установленный в безопасное значение.

Вы также можете установить PATH по умолчанию на /etc/sudoers

отредактируйте файл, используя visudo

и обновите строку до того, что вы пожелаете: По Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin

SUDO по умолчанию изменяет переменные env.

Проверьте его руководство и вариант под названием env_reset.

Вам просто нужно отключить его в / etc / sudoers.