Por que um prefere o outro neste exemplo?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Por favor, forneça links para a documentação do Ubuntu.
command-line
sudo
chili555
fonte
fonte
Respostas:
O
sudo su
comando significa "alternar usuário" e permite que você se torne outro usuário. Ele permite que um usuário permitido execute um comando como superusuário ou outro usuário, conforme especificado no arquivo sudoers.A opção -i (simular login inicial) executa o shell especificado pela entrada do banco de dados de senha do usuário de destino como um shell de login. Isso significa que os arquivos de recursos específicos de login, como .profile ou .login, serão lidos pelo shell. Se um comando for especificado, ele será passado para o shell para execução através da opção –c do shell. Se nenhum comando for especificado, um shell interativo será executado.
Fonte: ManPage
fonte
sudo su
será solicitada sua senha, não a senha root. O usuário root nem precisa ter uma senha. Independentemente disso, se um administrador estiver usando a senha root, isso não implica que todos os usuários comuns a conheçam.sudo
é executadosu
como root e o root podesu
para qualquer usuário sem saber sua senha. Mal-entendidos fundamentais sobre como o sistema funciona merecem uma OMI com voto negativo.sudo -i
também não solicitará a senha do root, portanto não é relevante para a pergunta.sudo su
altera apenas o usuário atual para root. As configurações do ambiente (como PATH) permanecem as mesmas.sudo -i
cria um ambiente novo como se o root tivesse acabado de fazer login.A diferença é mais perceptível se você usar outros usuários. Depois
sudo su bob
você será bob, mas no mesmo lugar. Depois quesudo -i -u bob
você for bob, no diretório inicial de bob, com o shell padrão de bob e com bob.profile
e qualquer outro script de login sendo executado.Veja
man sudo
para mais detalhes do que-i
faz. Infelizmente,man su
é leve nos detalhes.Encontrou uma versão do
man su
(do login-1: 4.1.4.2 + svn3283-3ubuntu5.1) que tem o seguinte a dizer:Portanto, se e até que ponto
sudo su
o ambiente muda, depende da sua distribuição e configuração. Assim,sudo -i
teoricamente, é mais portátil.fonte
su
faz configurações de ambiente de mudança, e pode ser usado para simular um login usando-
ou-l
. Mesmo sem-l
,$PATH
é alterado. Teste essas afirmações antes de fazê-las! (Você quis dizer quePWD
permanece o mesmo?)sudo su -
esudo -i
?$PATH
é alterado quando usosu
semsudo
(usando a senha root). De acordo cominfo su
(que pode ser uma coisa melhor para vincular na sua resposta), desu
fato, lê a entrada de senha do usuário que você está se tornando. Possivelmente a$PATH
mudança que estou observando depende do sistema (estou no Debian 7).man su
(que é mais longo que o que você vinculou) diz que faz parteshadow-utils 4.1.5.1
. Minhaman
página também diz que$PATH
está definido mesmo que--preserve-environment
seja usado. Então eu acho que é apenas uma diferença entre diferentes versões dosu
./etc/pam.d/sudo
e/etc/pam.d/su
pode ser configurado para fazer coisas completamente diferentes ou exatamente as mesmas.O principal problema é uma das (não tão) configurações do ambiente são.
O uso
sudo su
do novo shell obtém seu ambiente do usuário que emite o comando - o que pode ser problemático.Com
sudo -i
você obtém um shell raiz limpo.Veja notas especiais sobre sudo e conchas
Resta observar que raramente é necessário criar um shell raiz.
fonte
sudo -i
são semelhantes àssudo su -
que na verdade não obtêm seu ambiente do usuário que emite o comando.sudo su
vs.sudo -i
.