A maior diferença é que sudovocê não precisa da senha de root para executar um comando como root, como faria su. Você precisa da senha root para adicionar alguém ao sudoersarquivo, mas, posteriormente, essa pessoa poderá executar todos ou alguns (se você o tiver restringido) como root sem precisar de uma senha adicional.
A outra diferença é, como você observou, sudopermite um controle muito mais preciso sobre exatamente quais comandos podem ser executados.
Para detalhes do formato do sudoersarquivo, execute man sudoers. Você encontrará exemplos de permitir que apenas determinados comandos sejam executados como root. A estrutura básica de cada linha é:
user_list host_list = cmd_list
O cmd_list pode incluir detalhes de qual usuário o usuário real tem permissão para alternar. Por exemplo, você pode permitir que um webmaster mude para wwwroot para reiniciar o apache, mas não para fazer o root. Também pode incluir outras opções, como se a senha do usuário é necessária antes da mudança (esse é o padrão).
Uma linha de exemplo pode ser:
joe ALL=(ALL) ALL
o que significa: deixe joe executar qualquer comando em qualquer host como qualquer usuário. Uma linha mais apertada pode ser:
joe ALL=(operator) /usr/local/ops/
o que significa: deixe joe executar qualquer comando no diretório / usr / local / ops como o usuário "operador".
Existem muitos exemplos no final da página do manual sudoers.
Você deve editar /etc/sudoerscom o comando visudo. Isso verifica se o arquivo é legal e ajuda a impedi-lo de quebrá-lo acidentalmente.
sudoé uma invenção impressionante