Мне нужно запустить программу, установленную в / 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.