Я не верю, что мой вопрос - классический вопрос env_keep, который иногда возникает снова. сохранение переменных среды через оболочки.
Я хочу сохранить экспортированную функцию и экспортированную переменную окружения не только в sudo -s
, но и в том случае, если человек запускает sudo command
. Я не могу редактировать /etc /sudoers, который выглядит так:
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
# Members of the admin group may gain root privileges
%admin 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
Я могу редактировать /etc/sudoers.d
однако. Я пробовал значения по умолчанию!env_reset, но это не помогает. Я также пробовал env_keep, но это тоже не работает. Я наконец попробовал значения по умолчанию env_keep += "myfunction".
Когда я говорю, что это не работает, я имею в виду, что если я запускаю sudo -s
и затем env
, я вижу, что есть сохранение, однако переменные и функции не сохраняются, если я запускаю sudo somecommand
. Цель состоит в том, чтобы переменная окружения всегда передавалась двоичному файлу, независимо от того, вызывается ли он как обычный пользователь или как пользователь root.
Проще говоря, это работает:
test_var="hello world"
sudo -s
echo $test_var
Но это не работает, и я бы хотел
test_var="hello world"
sudo /bin/bash -c echo $test_var
Если кто-то может посоветовать, это было бы очень рекомендуется. Я не уверен, возможно ли это, учитывая ограничения, связанные с невозможностью редактировать /etc /sudoers, несмотря на то, что он может редактировать /etc/sudoers.d.
заранее спасибо