![Diferença em logins sudo e exibição de prompt](https://rvso.com/image/1555402/Diferen%C3%A7a%20em%20logins%20sudo%20e%20exibi%C3%A7%C3%A3o%20de%20prompt.png)
Qual é a diferença entre sudo -s
e sudo -i
e por que eles me dão conchas diferentes? Parece que -s
me mantém dentro bash
e -i
me dá sh
.
No MacOSX High Sierra 10.13, se eu digitar sudo -s
em um terminal e inserir minha senha, recebo root como meu nome de usuário, mas com um cifrão no prompt:
user1@mymachine:~$ sudo -s
**root@mymachine:~$**
Mas se eu digitar sudo -i
, recebo:
user1@mymachine:~$ sudo -i
Password:<br/>
**mymachine:~ root#**
Por que não recebo o sinal de hash # se sou root no exemplo acima com sudo -s
? Não sou verdadeiramente root?
As variáveis de ambiente são diferentes entre os dois?
Responder1
A primeira coisa que você precisa perceber é que sudo -s
é equivalente sudo -s root
e sudo -i
é equivalente a sudo -i root
. Sempre que você omite um usuário do sudo, ele assume que você está direcionando o usuário root.
sudo -s
executa um shell como usuário de destino enquanto sudo -i
efetua login como usuário de destino.
Sempre que você executa, sudo -s
você está efetivamente mudando seu shell para o shell do usuário root, enquanto sempre que você executa, sudo -i
você está efetivamente efetuando logout do usuário atual e efetuando login como root. É importante saber isso porque sempre que você altera seu shell para o shell do usuário root, você ainda mantém as informações de exportação do usuário. Ao executar, sudo -i
você está desconectando-se do usuário e efetuando login como root. Isso significa que você adota a configuração de shell do usuário root.
Isso não está relacionado, mas você deve evitar mudar seu usuário para root porque você pode quebrar coisas acidentalmente, você deve apenas sudo todos os comandos que precisam de escalonamento, mesmo que seja irritante. Se você realmente deseja mudar para um shell root, você deve executar su
o que permitirá que você faça login como root.