Diferença em logins sudo e exibição de prompt

Diferença em logins sudo e exibição de prompt

Qual é a diferença entre sudo -se sudo -ie por que eles me dão conchas diferentes? Parece que -sme mantém dentro bashe -ime dá sh.

No MacOSX High Sierra 10.13, se eu digitar sudo -sem 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 roote 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 -sexecuta um shell como usuário de destino enquanto sudo -iefetua login como usuário de destino.

Sempre que você executa, sudo -svocê está efetivamente mudando seu shell para o shell do usuário root, enquanto sempre que você executa, sudo -ivocê 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 -ivocê 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 suo que permitirá que você faça login como root.

informação relacionada