Как заставить 'sudo' сохранить $PATH?

Можно изменить регистрирующийся приоритет на "информационный" уровень или даже "отладить":

udevadm control --log-priority=info

Затем необходимо видеть, что все входит в систему системный журнал. Если Вы не делаете, то rsyslogd может не быть настроен для чтения журналов ядра, и можно все еще просмотреть использование журналов ядра dmesg.

Когда Вы сделаны, приносите его для установки по умолчанию, "допускают ошибку". Посмотрите в /etc/udev/udev.conf что Ваше значение по умолчанию регистрирует уровень.

126
16.07.2013, 11:50
8 ответов

Можно всегда делать:

sudo env "PATH=$PATH" godi_console

Как меры безопасности на Debian, /etc/sudoers имеет secure_path набор опции к безопасному значению.

Обратите внимание что:

sudo "PATH=$PATH" godi_console

Где sudo обработки ведущие аргументы, содержащие = символы как присвоения переменной среды отдельно, также работал бы при выполнении godi_console с Вашим $PATH (в противоположность secure_path) в его среде, но не влиял бы sudoпуть поиска для исполняемого файла, не, помогает - также sudo в нахождении этого godi_console.

156
27.01.2020, 19:29
  • 1
    мне нравится этот ответ лучше всего, так как он избегает потребности изменить настройки глобально (т.е. сохраняет принцип наименьшего количества полномочия) –  Alois Mahdal 11.03.2015, 02:31
  • 2
    sudo "PATH=$PATH" godi_console не работал в CentOs7 между прочим. Необходимый env –  Hakan Baba 25.01.2018, 08:29
  • 3
    Это должно хорошо использовать sudo env "PATH=$PATH" как псевдоним для sudo? Какие проблемы это могло создать? –  derricw 12.04.2018, 19:22
  • 4
    @ballsatballsdotballs. Поскольку тот псевдоним должен только влиять на Ваши интерактивные оболочки, которые должны быть относительно безопасными. –  Stéphane Chazelas 15.04.2018, 16:43

SUDO делает огибающий сброс переменных по умолчанию.

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

Просто необходимо отключить его в/etc/sudoers.

19
27.01.2020, 19:29
  • 1
    Охладитесь! В Ubuntu Вы можете visudo и комментировать secure_path и env_reset строки. Делает систему значительно менее безопасной, поэтому остерегайтесь. –  RawwrBag 29.03.2016, 21:29
  • 2
    Отключение env_reset кажется, не влияет sudoповедение w/r/t ПУТЬ. –  Zanna 13.04.2018, 14:40

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

редактировать файл с помощью visudo

и обновлять строку по своему усмотрению: По умолчанию secure_path = /sbin:/bin:/usr/sbin:/usr/bin

46
27.01.2020, 19:29

Esto funciona:

sudo $(which your_command)

Ejemplo llamando a mi script gpsque enumera los procesos de GPU Nvidia:

$ sudo gps
sudo: gps: command not found
$ sudo $(which gps)
  PID TTY          TIME CMD
 9922 tty7     02:42:47 Xorg

Explicación:

$ set -x;sudo $(which gps);set +x
++ which gps
+ sudo /home/xyztuv/myScripts/shl/gps
  PID TTY          TIME CMD
 9922 tty7     02:42:39 Xorg
+ set +x
9
20.08.2021, 13:09

Возможно, это не совсем то, о чем просит ОП, но это может помочь:

sudo -u the_user sh -c 'PATH=$PATH:/opt/godi/bin echo $PATH'

Это изменяет ПУТЬ внутри команды sudoed.

0
20.08.2021, 13:09

Это сработало:

sudo "PATH=$PATH" [your command]

Не меняйте $PATH на значение пути, просто напишите так

пример:$ sudo env "PATH=$PATH" ant -f webAppConfig.xml regenWebAppConf....

1
20.08.2021, 13:09
sudo --preserve-env=PATH env [command]

это перекрывает безопасный _путь с моей стороны

4
20.08.2021, 13:09

Вот что у меня сработало в Ubuntu.

Поместите это в конец вашего ~/.bashrc:

mysudo() {
        cmd=$(which $1)
        shift
        sudo "$cmd" $@
}

alias sudo="mysudo"

Затем выйдите из системы и войдите снова, или выполните:

source ~/.bashrc

После этого sudo работает правильно, как и в других дистрибутивах, таких как Debian.

Если подумать, это не поддерживает переключатели командной строки sudo, поэтому, если они вам нужны, вы можете расширить это и сделать что-то более сложное для их поддержки.

1
20.08.2021, 13:09

Теги

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