Eu não acredito que minha pergunta seja a clássica pergunta do env_keep que às vezes surge. preservando variáveis de ambiente através de shells.
Desejo preservar uma função exportada e uma variável de ambiente exportada em não apenas sudo -s
, mas também se uma pessoa executar sudo command
. Não consigo editar o / etc / sudoers, que é assim:
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
No entanto, posso editar /etc/sudoers.d
. Eu tentei Defaults! Env_reset, mas isso não ajuda. Eu também tentei env_keep mas isso não funciona também. Eu finalmente tentei Padrões env_keep +="myfunction".
Quando digo que isso não funciona, quero dizer que, se eu executar sudo -s
e, em seguida, env
, posso ver que há preservação, mas as variáveis e funções não serão preservadas se eu executar sudo somecommand
. O objetivo é garantir que uma variável de ambiente seja sempre passada para um binário, seja ela invocada como usuário normal ou como root.
Simplificando, isso funciona:
test_var="hello world"
sudo -s
echo $test_var
Mas isso não funciona e eu gostaria que fosse
test_var="hello world"
sudo /bin/bash -c echo $test_var
Se alguém puder aconselhar, isso seria muito recomendado. Não tenho certeza se isso é possível, dadas as restrições de não poder editar o / etc / sudoers, apesar de poder editar o /etc/sudoers.d.
Obrigado antecipadamente