Mantendo o sudo entre comandos e shells sem editar / etc / sudoers

0

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

    
por user3526827 09.10.2016 / 00:41

0 respostas

Tags