Я не вірю, що моє запитання - це класичне питання 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
Однак я можу редагувати . Я спробував Defaults! Env_reset, але це не допомагає. Я також спробував env_keep, але це також не працює. Я останній раз намагався за замовчуванням env_keep + = "моя функція".
Коли я кажу, що це не працює, я маю на увазі, що якщо я запускаю 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.
Спасибі заздалегідь
sudo -E
вирішує ваша проблема? Якщо ви хочете не хочете , щоб пройти один варіант кожен раз , коли ви можете зробити псевдонім sudo -E
.
sudo -E echo $test_var
то я отримую відповідь Hello world
.