Qual é a diferença entre o comando sudo e su?

12

Qual é a diferença entre the sudoe sucommand? Por que o OS X lida com isso diferente do Linux?

whitefleaCH
fonte
1
De qualquer forma, o Linux os trataria de maneira diferente do OS X. O OS X é certificado Unix, o que significa que está em conformidade com um determinado padrão de comportamento. O Linux é semelhante ao Unix, mas não é certificado como Unix e não está necessariamente em conformidade com o padrão Unix. Portanto, se houver diferenças (além do problema de senha root observado na resposta de Aaron Lake), elas não serão de conformidade por parte dos implementadores da distribuição Linux específica em questão.
Alesplin

Respostas:

21

OS X manipula sudoe suidenticamente para Linux.

sudoé um comando que, sem opções adicionais, executará um comando como root. Por exemplo:

% touch /newfile
touch: /newfile: Permission denied
% ls -l /newfile
ls: /newfile: No such file or directory
% sudo touch /newfile
% ls -l /newfile 
-rw-r--r--  1 root  wheel  0 Apr 27 11:45 /newfile

supor outro lado, mudará o usuário atual para root (novamente sem nenhum comando extra). No exemplo abaixo, eu tenho que executar sudo su, pois não sei a senha root do meu sistema:

% whoami
alake
% sudo su
$ whoami
root

A principal diferença entre sudoe sué sudoexecuta um comando como root, enquanto sufaz com que você seja root. Assim como outros utilitários de linha de comando, existem várias maneiras alternativas de usar ambos sudoe su, se você estiver interessado, sempre poderá executar, man <command>por exemplo. man sudopara obter mais informações.

Aaron Lake
fonte
5
Em termos de linguagem simples, sudopode ser considerado como super user and do. Como ponto adicional, no OS X, após a autenticação bem-sucedida, você poderá usar o sudo sem senha por um curto período de tempo (5 minutos por padrão, a menos que seja substituído sudoers), após o qual será necessário digitar a senha novamente.
precisa saber é o seguinte
1
o 'sem opções adicionais' é um qualificador bastante significativo ... ambos permitem que você se torne um usuário que não seja root ... por exemplo, sudo su -lm _wwwpermitirá que você tenha um shell como se fosse o usuário do servidor da web (executando o comando como root, como ele não tem uma senha válida) #
315 Joe Joe
2
@ Joe, eu considerei adicionar essa informação, mas omiti-me por brevidade. Como você descreve, sudoé um utilitário bastante robusto, e cobrir aqui as funcionalidades básicas acabaria por confundir ou sobrecarregar o público-alvo, procurando uma diferenciação entre sudoe su.
Aaron Lake
"A principal diferença entre sudo e su é sudo executa um comando como root, enquanto su faz com que você faça root" - false, sudo -sexecuta shell ("faz com que você faça root") e su -c commandexecuta o comando como root.
el.pescado
2
Novamente, por uma questão de brevidade, omiti os muitos métodos alternativos de uso sudo. Além disso, você não pode fazer isso su -c commandpor padrão no OS X, pois não sabe a senha do root. No entanto sudo su, você pode alterar a senha su -c command. Eu sinto que a pergunta foi respondida, e não havia necessidade de aprofundar os usos alternativos de sudo e su. No entanto, vou atualizar o post para os curiosos.
Aaron Lake