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_keepdetermina quais variáveis de ambiente são preservadas. UseDefaults env_keep += "HOME"para manter a variável de ambienteHOMEdo chamador ouDefaults env_keep -= "HOME"para apagá-la (e substitua-a pelo diretório base do usuário de destino). -
env_resetdetermina 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 queHOMEseja substituído, mesmo que tenha sido preservado, poisenv_resetestá desativado ouHOMEestá na listaenv_keep. Esta opção não tem efeito seHOMEnão for preservado de qualquer maneira. -
set_homeé comoalways_set_home, mas só se aplica asudo -s, não ao chamarsudocom 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 .