O que “sudo -s” realmente faz?

21

Estou usando o Ubuntu 10.04.

Noto que depois de executar " sudo -s " no terminal, o prompt mudou de

" XXX @ XXX "

para

" root @ XXX ",

parece que mudou para privilégio de root.

Mas quando eu verifico a documentação do comando "sudo" aqui , ele explica outra história de "sudo -s", alguém pode me explicar o que é " sudo -s " fazendo exatamente?

    
por Leem 06.07.2011 / 09:23

6 respostas

8

Os dois não são realmente inconsistentes - o comando sudo sempre altera o usuário, seja para raiz, ou para o usuário especificado com a opção -u . Todo o -s fornece um atalho para iniciar um shell como esse usuário. É realmente equivalente a:

sudo $SHELL

exceto que provavelmente fará fallback para /bin/sh ou algo assim se SHELL não estiver definido.

    
por 06.07.2011 / 09:27
7

sudo -s executa o shell especificado em sua variável de ambiente $SHELL como o superusuário / root. Você pode especificar outro usuário usando -u .

A variável de ambiente $SHELL contém o caminho para o shell de login padrão do usuário. A configuração atual do programa shell padrão é geralmente em etc/passwd . Dependendo do que você fez em sua sessão atual, a variável $ SHELL pode não conter o programa de shell que você está usando atualmente. Se você logar automaticamente com zsh por exemplo, mas invocar o bash, $ SHELL não mudará de /bin/zsh .

Mostre o usuário atual e o programa shell: echo $(whoami) is logged in and shell is $0

  • whoami imprime o nome de usuário no qual o usuário está trabalhando.
  • $0 contém o nome / caminho do programa atualmente em execução (neste caso, o programa shell).
por 14.07.2015 / 00:41
2

Do manual:

sudo allows a permitted user to execute a command as the superuser or another user, as specified in the sudoers file.

-s Shell, runs the shell specified by the SHELL environment variable if it is set or the shell as specified in passwd(5).

Mais seriamente, o sudo -s executa uma variável de ambiente do shell. Como você não adicionou nenhuma variável, ela é executada conforme especificado em passwd e, portanto, você se conecta como root.

    
por 06.07.2011 / 10:36
1

Veja este post do superusuário:

Qual é a diferença entre os comandos "su -s" e "sudo -s"?

A propósito, seu post deve ser movido para superusuário (ou askubuntu como dito nos comentários)!

    
por 06.07.2011 / 09:28
0

Parece que está criando outra instância do shell no topo do shell atual, mas com privilégios de root. Eu aposto que depois que você fizer sudo -s se você digitar exit, você voltará ao shell original.

    
por 06.07.2011 / 09:27
-1

sudo -s permite que você execute um comando para o qual você é pré-autorizado [consulte / etc / sudoers], possivelmente pedindo para confirmar sua ID atual.

    
por 06.07.2011 / 09:26