sudo
sempre requer a senha do usuário em execução (e exige que você tenha permissões específicas para fazer isso, ou seja, são um dos sudoers
).
su
requer a senha da conta de destino ( root
por padrão, mas a conta raiz não tem senha no OS X por padrão). Se você usar su
, poderá inserir a senha da conta de destino e executar um comando usando os privilégios desse usuário.
su -c some_cmd # as root
su username -c some_cmd # as username
Isso funciona passando todos os argumentos após o nome de usuário para o shell de login da conta de destino. Os shells geralmente suportam -c <commands>
arguments. No GNU coreutils su
, há um argumento -c command
real para su
que pode ser colocado antes do nome do usuário.
Você pode su
para outra conta de usuário (usando a senha da outra conta de usuário) e sudo
de lá, desde que outra conta seja um sudoer
.
Se você não quiser inserir a senha de outra conta nem atribuir à sua conta normal sudoers
permissões, estará praticamente sem opções, a menos que considere o SSH com autenticação de chave ou algo assim.