Existe alguma maneira de especificar que sudo
deve preservar determinadas variáveis de ambiente apenas para comandos especificados? Para alguns propósitos, eu gostaria do meu $HOME
env. variável preservada quando executo certos comandos. Para outros propósitos e outros comandos, quero redefinir. Isso pode ser feito /etc/sudoers
?
Editar:
Obrigado pelas respostas. Gostaria de saber se posso fazer uma pergunta de acompanhamento, que é "Por que, então, isso não funciona?"
No exemplo que estou tentando trabalhar, quero sudo nano
ler o meu $HOME/.nanorc
. Se eu usar isso:
Defaults:simon env_keep=HOME
funciona perfeitamente. Se eu usar isso:
Defaults!/bin/nano env_keep=HOME
ou isto:
Cmnd_Alias NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO env_keep=HOME
não está funcionando. Alguma sugestão sobre o porquê? (Estou no teste do Debian, aliás.)
(Nota: eu não acho nano
específico, btw - eu posso reproduzir o comportamento com um script bash de uma linha que simplesmente echo
s $HOME
).
sudo
com uma função do meu próprio, eu simplesmente adicionado um if [ "$1" == "$EDITOR" ]; then
bloco e agora estou chamando sudoedit
em vez :)
sudoedit
.sudoedit
irá executar copie o conteúdo de um arquivo para um arquivo tmp e execute o editor de sua escolha como usuário, quando o editor sair, verificará se você mudou alguma coisa e, se for o caso, substitua o original pelo editado. Você pode selecionar qual editor deseja que seja executado configurando os$EDITOR
env $ ou $ VISUAL`.