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
).
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`.sudo
com uma função do meu próprio, eu simplesmente adicionado umif [ "$1" == "$EDITOR" ]; then
bloco e agora estou chamandosudoedit
em vez :)Respostas:
Para substituir
env_keep
apenas por/path/to/command
(quando chamado por qualquer regra, por qualquer usuário) e pelo usuáriojoe
(não importa qual comando ele esteja executando):Você pode usar
-=
ou+=
para remover ou adicionar uma entrada àenv_keep
lista.fonte
man
página e me sinto um pouco tolo. Sem dúvida, essa resposta também ajudará outras pessoas.sudoers
página de manual da descrição formal e os exemplos mais fáceis de localizar se você já sabe como escrevê-las.env_keep
configuração (simon ALL = ALL
). Sudo usa a última entrada correspondente.Essas linhas são próprias
/etc/sudoers
para corrigir o problema quepbuilder
procura$HOME
seu arquivo de configuração do usuário, mas deve ser executado como root (movê-lo para/root
meio que derrota o propósito de ter um sistema e um arquivo de configuração do usuário).fonte
homens que sofrem:
Portanto, sim, você pode fazer isso usando
env_reset
,env_keep
eenv_check
no seu / etc / sudoers.fonte