A principal diferença entre esses comandos está na maneira como eles restringem o acesso a suas funções.
su (que significa "usuário substituto" ou "alternar usuário") - faz exatamente isso, 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 root. Se houver vários usuários em sua máquina que precisam executar comandos como root, todos eles precisam saber a senha root - observe que será a mesma senha. Se você precisar revogar as permissões de administrador de um dos usuários, precisará alterar a senha de root e informar somente às pessoas que precisam manter o acesso - desarrumado.
sudo (hmm ... qual é o mnemônico? Superusuário-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 (executar comandos como root, etc.) Quando chamado, solicita a senha do usuário que o iniciou - para garantir que a pessoa no terminal é realmente o mesmo "joe" que está listado 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 no Debian, o rootusuário não tem uma senha definida - ou seja, não é possível fazer login diretamente como root.
Além disso, /etc/sudoerspermite especificar algumas opções adicionais - ou seja, o usuário X só pode executar o programa Y etc.
A sudo sucombinação usada com frequência funciona da seguinte maneira: primeiro sudosolicita sua senha e, se você puder fazer isso, chama o próximo comando ( su) como superusuário. Como sué invocado por root, não é necessário inserir a senha do usuário de destino. Portanto, sudo supermite abrir um shell como outro usuário (incluindo root), se você tiver acesso de superusuário pelo /etc/sudoersarquivo.
su userlogin de shells não confiáveis, massu - user. Veja unix.stackexchange.com/q/7013/8250