Qual é a diferença entre “sudo su -” e “sudo -i”? [duplicado]

5

Eu sei que ambos os comandos resultam em ganhar um shell de root. Mas existem algumas diferenças. Em alguns servidores, por exemplo o prompt é diferente:

nomike@testerver:~> sudo -i
root@testerver:~> logout
nomike@testerver:~> sudo su -
[root@testerver ~]# 

Então eu acho que a manipulação de ".bashrc" ".bash_profile" e ".profile" é de alguma forma diferente.

Alguém invoca um shell de login e o outro não?

    
por nomike 16.01.2013 / 09:32

1 resposta

4

Tanto sudo -i como sudo su - fornecerão um shell de login interativo. A diferença que você está vendo é por causa da maneira que o sudo é configurado para manipular variáveis de ambiente e, nesse caso, o PS1. Seu PS1 é diferente do PS1 do root. Se você procurar em / etc / sudoers, provavelmente encontrará uma linha env_keep que contém PS1.

Defaults    env_keep += "MAIL PS1 PS2 QTDIR ..."

Isso instrui o sudo a manter (entre outros) a variável de ambiente PS1 no ambiente dos comandos que você está executando, então é isso que você vê (prompts diferentes).

Quando você executa sudo su - o ambiente modificado é passado para su , que então executa um shell de login, o su não força o ambiente a ser o mesmo, então ele é configurado com o que estiver nos arquivos de inicialização do root.

    
por 16.01.2013 / 10:05