o que 'sudo' significa para root?

5

Estou executando os seguintes comandos no Ubuntu 14.04:

root@ubuntu:~# service rpki-ca restart 
stop: Unknown job: rpki-ca
start: Unknown job: rpki-ca
root@ubuntu:~# sudo service rpki-ca restart 
rpki-ca stop/waiting
rpki-ca start/running
root@ubuntu:~#

Qual é o efeito de sudo no segundo comando? Por que o root precisa de sudo ?

    
por Xiaowei Liu 22.06.2015 / 16:38

2 respostas

3

Ok, pesquisando isso, encontrando esta resposta do U & L , verificando a sua Revisões do histórico e seguindo a fonte citada no revisão # 1 , este é um bug Upstart ; o problema é que, ao alternar para a raiz executando su , a variável de ambiente $UPSTART_SESSION é transportada do ambiente anterior, em vez de ser configurada novamente.

  

Depois de muito bater a cabeça e googling, encontrei uma postagem ( link ) mostrando que

     

sudo service xxxx start (ou pare ou reinicie)

     

funciona, enquanto

     

'service xxxx start (em uma sessão su)

     

não funciona.

     

Então, o culpado foi claramente o ambiente: se você for root com "su" em vez de "sudo su" ou "su -", "serviço" também não funcionará corretamente, já que "su" carregará a maior parte de seu ambiente de usuário normal para a sessão raiz.

     

Depois de alguns testes, descobri que o culpado é a variável de ambiente UPSTART_SESSION, que vem configurada quando você "su", mas não definida quando você "sudo su" ou "su -". Aqui estão alguns resultados de testes:

     

- não funciona

jsveiga@dell:~$ su
Password:
root@dell:/home/jsveiga# service smbd restart
stop: Unknown job: smbd
start: Unknown job: smbd
     

- funciona até mesmo a partir de uma sessão su

root@dell:/home/jsveiga# sudo service smbd restart
smbd stop/waiting
smbd start/running, process 3823
     

- funciona

root@dell:/home/jsveiga# exit
jsveiga@dell:~$ sudo su
root@dell:/home/jsveiga# service smbd restart
smbd stop/waiting
smbd start/running, process 3862
     

- funciona

root@dell:/home/jsveiga# exit
jsveiga@dell:~$ su -
Password:
root@dell:~# service smbd restart
smbd stop/waiting
smbd start/running, process 3905
     

- indo su, em seguida, desarmar os trabalhos UPSTART_SESSION

root@dell:/home/jsveiga# exit
jsveiga@dell:~$ su
Password:
root@dell:/home/jsveiga# service smbd restart
stop: Unknown job: smbd
start: Unknown job: smbd
root@dell:/home/jsveiga# unset UPSTART_SESSION
root@dell:/home/jsveiga# service smbd restart
smbd stop/waiting
smbd start/running, process 4244
     

Portanto, os scripts start / stop estão falhando de alguma forma simplesmente pela presença da variável de ambiente UPSTART_SESSION .

     

BR,   João S Veiga

Para corrigir isso, basta remover a configuração $UPSTART_SESSION :

unset UPSTART_SESSION

ou mude para a raiz por outros meios, como su - , sudo su ou sudo -i .

    
por kos 22.06.2015 / 18:24
0

Nesse contexto, não significa nada e deve ser removido. Sem especificar algum outro usuário, sudo tenta se tornar root, e se você já é root, isso é um não operacional, além de criar um processo adicional (por sudo em si) que ocupa alguns recursos até o comando dele está correndo termina.

    
por psusi 22.06.2015 / 17:10

Tags