O que "sudo -s" realmente faz?

26

Estou usando o ubuntu 10.04.

Percebo 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 verifico a documentação do comando "sudo" aqui , ele explica outra história de "sudo -s", alguém pode me explicar o que exatamente " sudo -s " está fazendo?

Leem
fonte
6
Você deve perguntar isso em askubuntu.com
7
Porquê askubuntu.com? sudoé específico Ubuntu-mal ...
Dave Sherohman
possível duplicata de Diferença entre comandos da "su -s" e "sudo-s"
Linker3000

Respostas:

9

Os dois não são realmente inconsistentes - o sudocomando sempre altera o usuário, para root ou para o usuário que você especificar com a -uopção. Tudo o que -sfaz é fornecer um atalho para iniciar um shell como esse usuário. É realmente equivalente a:

sudo $SHELL

exceto que provavelmente irá recuar para /bin/shou algo assim, se SHELLnão estiver definido.

TomH
fonte
6

sudo -sexecuta o shell especificado na $SHELLvariável de ambiente como superusuário / raiz. Você pode especificar outro usuário usando -u.

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

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

  • whoami imprime o nome de usuário em que o usuário está trabalhando.
  • $0 contém o nome / caminho do programa em execução no momento (neste caso, o programa shell).
RKelley
fonte
3

Do manual:

sudo permite que um usuário permitido execute um comando como superusuário ou outro usuário, conforme especificado no arquivo sudoers.

-s Shell, executa o shell especificado pela variável de ambiente SHELL se estiver definido ou o shell conforme especificado em passwd (5).

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

Anarko_Bizounours
fonte
1
Não é óbvio no manual que, se você não fornecer um usuário, o padrão será o root. Você precisaria ler a descrição da -uopção para aprender isso. Mas para alguém que não está familiarizado sudo, eles não saberiam olhar -u.
23615 wisbucky
0

Parece que está criando outra instância do shell em cima do shell atual, mas com privilégios de root. Aposto que depois de fazer isso, sudo -sse você digitar exit, retornará ao shell original.

Noah Duncan
fonte
-1

sudo -s permite executar um comando para o qual você está pré-autorizado [consulte / etc / sudoers], possivelmente solicitando que você confirme seu ID atual.

Eric Herlitz
fonte