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

2

Parece que não há diferença alguma. Quando os comandos whoami ou id são executados, todos eles geram credenciais raiz. Isso é uma ilusão? Se a conta root está desabilitada por padrão no Ubuntu e, portanto, su dá erro de autenticação, então por que permitir sudo -I

Edit: Com licença, a ÚNICA diferença que eu aprendi é que o sudo -I pede a senha do usuário que invocou o comando, e su pede root, ou alguma outra senha do usuário alvo.

Existe alguma outra diferença?

    
por user161589 16.03.2014 / 03:22

2 respostas

-1

EDITADO. Nota: Esta resposta foi strongmente editada desde a sua última iteração com base nos comentários de Eliah Kagan.

sudo -i executa um shell de login com privilégios de root, simulando um login inicial com root, agindo de forma semelhante a su - . A principal diferença entre sudo -i e su - é que sudo -i pode ser executado usando a senha de um sudo, enquanto su - deve ser executado com a senha da conta raiz. Portanto, se você estiver em uma instalação padrão do * buntu, em que o login da raiz está desabilitado, sudo -i pode ser usado enquanto su e suas variantes não podem.

Se você executar os seguintes comandos:

$ sudo -i
[sudo] password for <username>: <enter user's password>
# cd ~
# pwd

você receberá a saída:

/root

Assim, você pode ver que sudo -i simula um login raiz inicial, incluindo a alteração da pasta pessoal ( $HOME ) para raiz, em vez da sua própria. Isso também significa que sudo -i lê arquivos de login como .profile .

Enquanto isso, sudo -s inicia um novo shell, mas sem simular login inicial - os arquivos de login não são lidos e $HOME ainda está definido para a pasta inicial do usuário .

Se você executar os seguintes comandos:

$ sudo -s
[sudo] password for <username>: <enter user's password>
# cd ~
# pwd

você receberá a saída:

/home/<username>

A partir disso, você pode ver que sudo -s não não simula um login inicial e não altera $HOME .

    
por Davidson Chua 16.03.2014 / 03:49
0

sudo -i tenta se tornar o usuário cuja senha você usa, ele executa os recursos específicos de login desse usuário ( .profile etc) e tenta executar a partir do diretório pessoal do usuário.

su , por outro lado registra você como outros usuários, no diretório inicial do outro usuário. E os recursos específicos de login da conta that serão executados. Por padrão, su registra você como root .

Eu recomendo usar sudo -i over su , a menos que você saiba o que está fazendo.

    
por Seth 16.03.2014 / 03:56