Qual é a diferença entre os dois comandos? Qual é melhor para emular outro usuário quando quiser fazer algo como esse usuário?
sudo -H -iu USER command
e
su -l USER -c command
Responder1
Se você estiver tentando executar um comando como outro usuário, sudo
solicitará sua senha, su
solicitará a senha do outro usuário.
O Sudo foi projetado para permitir que usuários sem privilégios executem comandos específicos como um usuário diferente e, portanto, possui um arquivo de configuração /etc/sudoers
que permite aos administradores do sistema decidir quais usuários podem executar quais comandos como quais outros usuários. Ou seja, tem permissões refinadas. Essas permissões podem ser concedidas e posteriormente revogadas.
Su também permite executar um comando como outro usuário, mas não foi projetado com as mesmas permissões detalhadas. Se você tiver a senha do outro usuário, poderá fazer qualquer coisa como esse usuário. A única forma de revogar esse acesso é alterando a senha do outro usuário.
Alerta de opinião
Geralmente eu usaria sudo
not su
para a maioria das coisas. É mais fácil dar a alguém um pouco de acesso sem apenas entregar as chaves de tudo (sua senha)
Fim da opinião
Não há muita diferença no efeito ao tentar "simular" outro usuário. Ambos executam seu comando como esse usuário.