Qual é a diferença entre sudo -i e sudo su -

18

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

Eles são iguais?

    
por Howard 14.02.2012 / 07:23

2 respostas

30

Eles podem fornecer funcionalmente perto da mesma coisa, mas parece que 'sudo -i' é mais leve e mantém algumas referências úteis no seu ambiente.

Você pode ver os processos extras observando 'ps auxf' (f dá a você uma visão da floresta)

sudo -i produz esta árvore de processos

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4675  0.6  0.0  19512  2260 pts/0    S+   23:42   0:00  |           \_ -bash

sudo su - produz esta árvore de processos

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4687  0.5  0.0  43256  1488 pts/0    S    23:42   0:00  |           \_ su -
root      4688  0.5  0.0  19508  2252 pts/0    S+   23:42   0:00  |               \_ -su

Note que eles estão começando do mesmo processo bash pid, 4482, mas esse su - parece gerar outra etapa.

Seu primeiro 'sudo' já está elevando seu nível de acesso para root. Executar o su sem especificar um nome de usuário dentro do sudo altera o usuário atual para o root duas vezes.

Outra maneira de investigar isso é executando os dois comandos com strace -f.

strace -f -o sudoi sudo -i

vs

strace -f -o sudosu sudo su -

Se você diferenciar esses dois straces, você verá mais exeves sendo executadas para o sudo su -.

Mais uma coisa.

sudo -i mantém as variáveis de ambiente extras definidas pelo SUDO.

SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000

sudo su-clobbers essas variáveis.

    
por 14.02.2012 / 08:46
1

Resposta: Não, eles não são iguais.

Resposta longa: sudo e su - são programas diferentes que realizam a mesma tarefa, elevando você a privilégios de root.

su costumava ser a maneira prática de se tornar root em sistemas Linux. No entanto, sempre houve a necessidade de separar privilégios e deixar algumas informações de auditoria para trás. Além disso, quando você faz su - , tudo que você faz é feito como root e é perigoso ter tanto poder. Aqui é onde o sudo veio para o resgate.

O

sudo tem algumas características que o su não possui. O elemento-chave no sudo é a capacidade de executar o comando "one" como root e, em seguida, descartar privilégios para o usuário normal. Exemplo: remova um arquivo de propriedade de root.

sudo rm /root/someFile

Este comando apagará o arquivo porque o sudo o elevará para root toda vez que você usar o comando sudo antes de outro comando. O próximo comando executado será executado como um usuário normal (a menos que você anexe o comando sudo no início). Isso permite que você realize tarefas administrativas e, em seguida, elimine privilégios imediatamente, ajudando a evitar condições perigosas.

o sudo também oferece outros benefícios, como restringir o conjunto de programas que um usuário pode executar, logs de comandos executados sob o sudo e outras coisas. Para mais informações sudo em poucas palavras

Quando você faz su - ou sudo -i você faz a mesma coisa. Isso está se tornando raiz, mas tenha em mente que su e sudo são completamente diferentes e fornecem ferramentas diferentes como administrador do sistema. Pessoalmente, NUNCA executo o su - e minha política de pam proíbe , permitindo ninguém para executá-lo. Nos meus sistemas você sempre tem que usar o sudo por causa dos benefícios adicionados.

Mais informações: Usando e habilitando o sudo

    
por 17.02.2012 / 16:17