O Sudo tem muitas opções de configuração em tempo de compilação. Você pode listar as configurações em sua versão com sudo -V
. Uma das diferenças entre a configuração no Debian wheezy e no Ubuntu 12.04 é que a variável de ambiente HOME
é preservada no Ubuntu, mas não no Debian; ambas as distribuições apagam todas as variáveis de ambiente, exceto algumas que são explicitamente marcadas como seguras para serem preservadas. Assim, sudo -s
preserva HOME
no Ubuntu, enquanto no Debian HOME
é apagado e sudo
então o configura para o diretório home do usuário alvo.
Você pode substituir esse comportamento no arquivo sudoers
. Execute visudo
para editar o arquivo sudoers
. Existem várias opções relevantes:
-
env_keep
determina quais variáveis de ambiente são preservadas. UseDefaults env_keep += "HOME"
para manter a variável de ambienteHOME
do chamador ouDefaults env_keep -= "HOME"
para apagá-la (e substitua-a pelo diretório base do usuário de destino). -
env_reset
determina se as variáveis de ambiente são redefinidas. A reconfiguração de variáveis de ambiente geralmente é necessária para regras que permitem a execução de um comando específico, mas não tem um benefício de segurança direto para regras que permitem a execução de comandos arbitrários de qualquer maneira. -
always_set_home
, se definido, fará com queHOME
seja substituído, mesmo que tenha sido preservado, poisenv_reset
está desativado ouHOME
está na listaenv_keep
. Esta opção não tem efeito seHOME
não for preservado de qualquer maneira. -
set_home
é comoalways_set_home
, mas só se aplica asudo -s
, não ao chamarsudo
com um comando explícito.
Essas opções podem ser definidas para um determinado usuário de origem, um determinado usuário de destino ou um determinado comando; veja o manual sudoers
para detalhes.
Você sempre pode optar por substituir HOME
de uma determinada chamada para sudo
passando a opção -H
.
O shell nunca substituirá o valor de HOME
. (Ele definiria HOME
se não fosse definido, mas sudo
sempre definiria HOME
de uma forma ou de outra.)
Se você executar sudo -i
, sudo
simulará um login inicial. Isso inclui a definição de HOME
no diretório inicial do usuário de destino e a invocação de um shell de login .