when must you login as this root in Ubuntu (or Linux)? Is it just to avoid typing
sudo
on commands requiring root privilege?
A minha interpretação das suas perguntas é:
- Há cenários em que você deve usar
sudo -i
porquesudo
não é suficiente? - Ou
sudo -i
é apenas para evitar digitarsudo
vezes sem conta, mas não dá outra vantagem?
A principal vantagem de sudo -i
é que ele inicia um shell. Você pode então usar pipes, redirecionamentos, etc. como root. Considere:
sudo dd if=/dev/sdc conv=noerror bs=32M | pv | gzip -c > /root/image.raw.gz
Nesse caso, sudo
afeta apenas dd
. Enquanto você está solicitando sua senha, pv
já está em execução, seu monitor fica confuso. Ao mesmo tempo, seu shell informa que você não tem acesso a /root/image.raw.gz
, apesar de usar sudo
; isso ocorre porque o redirecionamento ( >
) é executado pelo shell que está sendo executado sem sudo
.
Existem várias técnicas para contornar esses obstáculos. A lista a seguir provavelmente não é exaustiva:
- Execute
sudo true
antes e insira sua senha. Seusudo
não solicitará você novamente em alguns minutos, a menos que esteja configurado de outra forma. -
Use
sudo tee
da seguinte forma:sudo dd if=/dev/sdc conv=noerror bs=32M | pv | gzip -c | sudo tee /root/image.raw.gz > /dev/null
-
Ou execute o comando dentro de um shell extra:
sudo bash -c 'dd if=/dev/sdc conv=noerror bs=32M | pv | gzip -c > /root/image.raw.gz'
-
Ou execute este shell extra e trabalhe nele:
sudo bash
ousudo -i
(ambos os comandos não são bem equivalentes).
Então, você realmente não precisa de -i
. Pode não existir, você ainda seria capaz de fazer as coisas como root.
Outra vantagem pode ser que sudo -i
executa um shell que origina os arquivos da raiz (como .profile
), enquanto sudo bash
ou sudo bash -l
usa os arquivos do usuário invocador. Eu posso imaginar que um pode ter um ambiente definido para raiz, adaptado para tarefas administrativas. Nesse caso, sudo -i
é útil.
Os perigos de trabalhar em um shell executando com privilégios de root são cobertos por outras respostas. Eu não vou repeti-los.