Я не верю, что мой вопрос - классический вопрос 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.

заранее спасибо

0