A principal diferença entre esses comandos está na maneira como eles restringem o acesso às suas funções.
su
(que significa "usuário substituto" ou "alternar usuário") - faz exatamente isso, ele inicia outra instância do shell com privilégios do usuário de destino. Para garantir que você tenha os direitos para fazer isso, ele solicita a senha do usuário de destino . Então, para se tornar root, você precisa saber a senha do root. Se houver vários usuários em sua máquina que precisem executar comandos como root, todos eles precisarão saber a senha do root - note que ela será a mesma senha. Se você precisar revogar as permissões de administrador de um dos usuários, precisará alterar a senha do root e informá-la apenas para as pessoas que precisam manter o acesso - confuso.
sudo
(hmm ... qual é o mnemônico? Super-User-DO?) é completamente diferente. Ele usa um arquivo de configuração (/ etc / sudoers) que lista quais usuários têm direitos para ações específicas (execute comandos como root, etc.) Quando chamado, ele solicita a senha do usuário que o iniciou - para garantir que a pessoa no terminal seja realmente a mesma "joe" listada em /etc/sudoers
. Para revogar privilégios de administrador de uma pessoa, você só precisa editar o arquivo de configuração (ou remover o usuário de um grupo listado nessa configuração). Isso resulta em um gerenciamento muito mais limpo de privilégios.
Como resultado disso, em muitos sistemas baseados em Debian root
user não possui um conjunto de senhas - ou seja, não é possível fazer login como root diretamente.
Além disso, /etc/sudoers
permite especificar algumas opções adicionais - por exemplo, o usuário X só pode executar o programa Y etc.
A combinação sudo su
usada com frequência funciona da seguinte maneira: primeiro sudo
solicita a sua senha e, se tiver permissão para fazer isso, invoca o próximo comando ( su
) como um superusuário. Como su
é invocado por root
, não é necessário inserir a senha do usuário de destino. Portanto, sudo su
permite que você abra um shell como outro usuário (incluindo root), se você tiver permissão para acessar superusuários pelo arquivo /etc/sudoers
.