Ambos os programas são suid root. Não há motivo para digitar sudo su
, exceto na situação em que alguém não está familiarizado com as opções -i
e -E
para sudo, ou de outra forma, no hábito de fazer as coisas como root sem entender por que elas são feitas. Os comandos su passam por alguns vars de ambiente codificados (ou, no Linux recente, podem usar -p
para passar pelo ambiente inteiro), enquanto o sudo pode controlar exatamente quais variáveis passam (tente $DISPLAY
para um exemplo útil ). O comando su só pode solicitar a senha do usuário de destino (assumindo uma pilha de pam padrão), enquanto o sudo pode ser configurado para autenticar como o usuário de origem ou de destino, ou nenhum, ou sempre raiz - e pode fazê-lo por comando. O comando su
redefine $HOME
, enquanto o sudo pode decidir com base no conjunto de regras disponível. E esse é mais um processo bifurcado que não precisa existir. Enquanto isso, o sudo registra os comandos que são executados, desde que você não esteja apenas fazendo sudo -i
ou iniciando um shell, você pode obter um way melhor trilha de auditoria com o sudo. Quando você executa um comando usando o sudo, ele remove os elementos .
e empty em $ PATH e os verifica pela última vez, evitando que as pessoas colem um script de shell chamado "ls" em /tmp
e travessuras similares. :)
Basicamente, sudo su
é como pregar uma mão atrás das costas de Sudo e não ganhar nada. :)