Quais arquivos de configuração de shell são lidos para o shell iniciado com “sudo -i”?

0

De acordo com man sudo sudo -i inicia um shell de login e deve, no meu entendimento, ler / source ~/.profile , ou seja, /root/profile ou [non-root user home/.profile e /etc/profile . Adicionando aliases, por ex. alias ll='ls -la' para ambos os arquivos não disponibiliza o alias no shell iniciado por sudo -i . Se eu executar bash no shell com o nome de sudo -i , os aliases estarão disponíveis.

Eu já imaginei colocar aliases em /etc/profile.d/00-aliases.sh em . Aqui eu só quero saber porque o comportamento esperado não ocorre.

Eu relatei isso como um bug do sudo no launchpad.net , mas agora eu Não tenho certeza se isso pode ser um aspecto complicado do comportamento esperado. A maneira como man sudo descreve -i é muito trivial de qualquer maneira.

    
por Karl Richter 11.08.2016 / 14:11

1 resposta

0

Os arquivos que são lidos dependem do shell do usuário alvo. Portanto, por exemplo, se você usar sudo -u user1 -i e usuário1 usar csh , ele lerá ~user1/.login . Para usuários do ksh, seria ~user1/.profile .

Para bash usuários (como root ), o arquivo lido é ~/.bash_profile se existir, com um retorno para ~/.profile

por exemplo

% sudo head -1 /root/.bash_profile /root/.profile 
==> /root/.bash_profile <==
echo RUNNING BASH_PROFILE

==> /root/.profile <==
echo RUNNING PROFILE

% sudo -i
RUNNING BASH_PROFILE
root@server:~# rm /root/.bash_profile
root@server:~# exit
logout

% sudo -i
RUNNING PROFILE
root@server:~# 

Assim, podemos ver a presença de .bash_profile impedido de que .profile seja executado. Este é um comportamento normal para bash login shells, seja acessado através de um login ssh ou via sudo -i .

    
por 11.08.2016 / 15:14