Existe alguma maneira de especificar que sudodeve preservar determinadas variáveis de ambiente apenas para comandos especificados? Para alguns propósitos, eu gostaria do meu $HOMEenv. 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 nanoler 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 nanoespecífico, btw - eu posso reproduzir o comportamento com um script bash de uma linha que simplesmente echos $HOME).
sudocom uma função do meu próprio, eu simplesmente adicionado um if [ "$1" == "$EDITOR" ]; thenbloco e agora estou chamando sudoeditem vez :)
sudoedit.sudoeditirá 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$EDITORenv $ ou $ VISUAL`.