Есть ли способ указать, что sudo
следует сохранять определенные переменные среды только для указанных команд? В некоторых целях я хотел бы, чтобы мой $HOME
env. переменная сохраняется, когда я запускаю определенные команды. Для других целей и других команд я хочу сбросить его. Можно ли это сделать /etc/sudoers
?
Редактировать:
Спасибо за ответы. Интересно, могу ли я задать дополнительный вопрос: «Почему же тогда это не работает?»
В примере я пытаюсь получить работу, я хочу sudo nano
прочитать мой $HOME/.nanorc
. Если я использую это:
Defaults:simon env_keep=HOME
это работает отлично. Если я использую это:
Defaults!/bin/nano env_keep=HOME
или это:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
это не работает вообще. Любые предложения относительно того, почему? (Кстати, я нахожусь на тестировании Debian.)
(Примечание: я не думаю, что это nano
конкретно, кстати - я могу воспроизвести поведение с помощью однострочного сценария bash, который просто echo
s $HOME
).
sudoedit
вместо этого.sudoedit
запустит копирование содержимого файла в файл tmp и запустит редактор по вашему выбору в качестве вашего пользователя, при выходе из редактора проверит, изменили ли вы что-нибудь, и если да, замените оригинал на отредактированный. Вы можете выбрать, какой редактор вы хотите запустить, установив$EDITOR
переменные или $ VISUAL` env.sudo
использую свою собственную функцию, я просто добавилif [ "$1" == "$EDITOR" ]; then
блок и теперьsudoedit
вместо этогоОтветы:
Для переопределения
env_keep
только для/path/to/command
(при вызове через любое правило любым пользователем) и для пользователяjoe
(независимо от того, какую команду он выполняет):Вы можете использовать
-=
или,+=
чтобы удалить или добавить запись вenv_keep
список.источник
man
страницы, и я чувствую себя немного глупо. Без сомнения, этот ответ тоже поможет другим.sudoers
странице руководства трудным для понимания из формального описания и примеров, которые легче найти, если вы уже знаете, как их написать.env_keep
настройки (simon ALL = ALL
). Судо использует последнюю соответствующую запись.Эти строки взяты от меня,
/etc/sudoers
чтобы исправить проблему, котораяpbuilder
ищет$HOME
свой пользовательский конфигурационный файл, но должен быть запущен от имени пользователя root (перемещение его в/root
своего рода противоречит цели иметь как системный, так и пользовательский конфигурационный файл).источник
человек sudoers:
Поэтому да, вы можете сделать это, используя
env_reset
,env_keep
иenv_check
в вашем / etc / sudoers.источник