Usuário não root que possui / root como $ HOME

1

Eu tenho a seguinte entrada no arquivo /etc/passwd :

daemon:x:2:2:daemon:/sbin:/sbin/nologin

No entanto, quando eu sudo -su daemon , o $HOME parece estar definido para /root :

[root@sbecby07 ~]# sudo -su daemon 'echo $USER $HOME'
daemon /root

Já fiz sudo usermod -d /sbin daemon para alterá-lo de volta para /sbin , mas ele ainda está apontando para /root .

Eu também não encontro nenhuma linha modificadora $ HOME em /etc/profile .

Onde devo procurar mais?

    
por Lukman 26.05.2016 / 10:54

2 respostas

2

Há uma diferença entre sudo -s e sudo -i .

Você está usando sudo -s , que não define os recursos do usuário de destino, incluindo a variável $HOME . Apenas carrega o shell do usuário.

sudo -i executa o shell como um shell de login, que é como uma nova sessão, incluindo a configuração da casa certa, bem como o carregamento de .profile e .login .

Veja man sudo para detalhes.

Demonstração

Você pode ver as diferenças entre sudo -s e sudo -i aqui:

root@node51 [~]# sudo -s -u deltik echo '$USER' '$HOME'
deltik /root
root@node51 [~]# sudo -i -u deltik echo '$USER' '$HOME'
deltik /home/deltik
    
por 26.05.2016 / 13:51
1

Como já foi dito, o sudo -i é o comando correto para abrir um shell de login para esse usuário, que então possui o ambiente correto, incluindo o conjunto $ HOME.

No entanto, se você realmente quer fazer isso, você precisa ter um shell de login válido definido em / etc / passwd, então você deve mudar / sbin / nologin para - por exemplo - / bin / bash primeiro. / p>     

por 26.05.2016 / 19:03