Por que $ HOME é herdado quando eu inicio um shell com sudo?

3

Estou montando uma caixa Vagrant e notei algo que achei estranho.

root@box:~# sudo --user=vagrant bash
bash: /root/.bashrc: Permission denied
vagrant@box:~$ export
declare -x HOME="/root"

Por que HOME está definido como /root aqui? O diretório inicial para o usuário vagrant certamente não é /root :

vagrant@box:~$ grep vagrant /etc/passwd
vagrant:x:1000:1000::/home/vagrant:/bin/bash

Tudo o que encontrei on-line falou sobre como herdar variáveis de ambiente, não como evitá-las. O arquivo sudoers contém o env_reset default. Eu não sei o que mais controla esse comportamento.

    
por Der Hochstapler 17.12.2014 / 01:14

1 resposta

7

Esta é uma escolha. Se você não gostar, poderá usar a opção -i ou -H ou alterar a configuração. A página do manual sudo (8) diz para HOME :

Set to the home directory of the target user if -i or -H are specified, env_reset or always_set_home are set in sudoers, or when the -s option is specified and set_home is set in sudoers.

Na verdade, env_reset não afeta o $HOME no Ubuntu (mas veja abaixo). Esta é uma imprecisão na página man. Consulte o bug da barra de lançamento # 889936 .

Informações adicionais

Algumas variáveis de ambiente ainda podem ser mantidas quando env_reset é fornecido. Existem padrões de tempo de compilação, e isso pode ser alterado com a opção env_keep ; veja a página de manual do sudoers (5) para mais informações. Na saída sudo -V sob a raiz, você pode ver a lista dessas variáveis de ambiente em "Variáveis de ambiente para preservar:". Em particular, HOME é listado por padrão no Ubuntu, mas não no Debian.

Para mais informações, consulte:

por 17.12.2014 / 01:22

Tags