Qual é a diferença entre 'su -', 'sudo bash' e 'sudo sh'?

29

Eu gostaria de saber qual é a diferença entre

  • su -
  • sudo bash
  • sudo sh

Não consigo fazer o login como root durante o processo su -porque não tenho a senha de root - quero dizer, tenho minha senha de usuário com a qual posso, sudo "command" mas essa senha não funciona. su - Posso fazer login como root com sudo basha minha senha de usuário e consigo fazer login enquanto fazendo, sudo shmas depois recebo um prompt de comando neste formulário #

Patryk
fonte

Respostas:

27

fundo

No Linux (e Unix em geral), existe um superusuário chamado Root . O superusuário pode fazer tudo e qualquer coisa e, portanto, fazer o trabalho diário como superusuário pode ser perigoso. Você pode digitar um comando incorretamente e destruir o sistema. Idealmente, você executa como um usuário que possui apenas os privilégios necessários para a tarefa em questão. Em alguns casos, isso é necessariamente raiz, mas na maioria das vezes é um usuário comum.

su -

Este comando é usado para efetuar login na conta raiz.
Por padrão, a senha da conta Raiz está bloqueada no Ubuntu. Isso significa que você não pode efetuar login diretamente como root ou usar o comando su para se tornar o usuário raiz. No entanto, como a conta raiz existe fisicamente, ainda é possível executar programas com privilégios no nível raiz. É aqui que o sudo entra - ele permite que usuários autorizados (normalmente usuários "Administrativos") executem certos programas como Root sem precisar saber a senha do root.

Consulte Como ativar a conta raiz .

sudo sh

Este comando executa "sh" como um super usuário.
O utilitário sh é um intérprete de linguagem de comando que deve executar comandos lidos a partir de uma sequência de linhas de comando, da entrada padrão ou de um arquivo especificado.

sudo bash

Este comando executa "bash" como um super usuário.
Bash é o shell ou intérprete da linguagem de comandos. O Bash é um shell compatível com sh que incorpora recursos úteis dos shell Korn (ksh) e C (csh). Ele se destina a estar em conformidade com o padrão IEEE POSIX P1003.2 / ISO 9945.2 Shell e Ferramentas. Oferece melhorias funcionais sobre sh para programação e uso interativo. Além disso, a maioria dos scripts sh pode ser executada pelo Bash sem modificação.

Referências: 1 , 2 , 3 .

desgua
fonte
7
Vale a pena notar que você pode efetuar login como superusuário executando sudo su -sem uma senha root. Como o sudo executa o su -comando com permissões de root, a senha do usuário será solicitada apenas. Isso tem a vantagem de configurar o ambiente do usuário raiz, o que não pode ser feito simplesmente executando um shell com o sudo.
Aaron D
6

su -:

Isso mudará seu identificador de usuário e herdará as variáveis ​​de ambiente como se você tivesse efetuado login com esse usuário. Normalmente você usaria o formato su - <userid>para fazer login como usuário. Se você soltar o "userid", ele assume que você está tentando fazer login como root - o que você não pode (a menos que altere a senha root).

sudo bash& sudo sh:

Qualquer coisa após o sudo é um programa para executar - portanto, nesses casos, você está pedindo para executar algumas conchas - bash e dash respectivamente. use man bashe man shpara obter mais detalhes sobre as diferentes conchas.


Perguntas relacionadas:

liberdade de expressão
fonte
Ok, obrigado pela resposta, mas qual é a senha padrão para o root? Onde posso encontrá-lo ?
Patryk
O @lordmonkey root não tem uma senha e não precisa de uma. sudo -ilhe dará um shell de login como o su -faria, exceto que o sudo pede sua senha, não a raiz.
precisa saber é o seguinte