Quelle est la différence entre la commande sudo et su?

12

Quelle est la différence entre la commande sudoet su? Pourquoi OS X les gère-t-il différemment de Linux?

whitefleaCH
la source
1
Si quoi que ce soit, Linux les traiterait différemment d'OS X. OS X est certifié Unix, ce qui signifie qu'il est conforme à un certain standard de comportement. Linux est de type Unix, mais n'est pas certifié Unix et n'est pas nécessairement conforme à la norme Unix. Donc, s'il y a des différences (autres que le problème de mot de passe root noté dans la réponse d'Aaron Lake), elles sont non conformes de la part des implémenteurs de la distribution Linux particulière en question.
alesplin

Réponses:

21

OS X gère sudoet suidentique à Linux.

sudoest une commande qui, sans aucune option supplémentaire, exécutera une commande en tant que root. Par exemple:

% 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

sud'autre part, basculera l'utilisateur actuel vers root (encore une fois sans aucune commande supplémentaire). Dans l'exemple ci-dessous, je dois exécuter sudo su, car je ne connais pas le mot de passe root de mon système:

% whoami
alake
% sudo su
$ whoami
root

La principale différence entre sudoet suest sudoexécute une commande en tant que root, tandis que suvous rend root. Tout comme les autres utilitaires de ligne de commande, il existe un certain nombre de façons alternatives d'utiliser les deux sudoet su, si vous êtes intéressé, vous pouvez toujours exécuter man <command>par exemple. man sudopour obtenir plus d'informations.

Lac Aaron
la source
5
En termes de langage simple, cela sudopeut être un peu comme super user and do. Comme point supplémentaire, sous OS X, une fois que vous vous êtes authentifié avec succès, vous pouvez ensuite utiliser sudo sans mot de passe pendant une courte période (5 minutes par défaut, sauf en cas de substitution sudoers), après quoi vous devrez taper à nouveau le mot de passe.
binarybob
1
le 'sans options supplémentaires' est un qualificatif assez significatif ... ils vous permettront tous deux de devenir des utilisateurs autres que root ... par exemple, sudo su -lm _wwwvous permettra d'avoir comme shell que si l'utilisateur du serveur web (en exécutant la commande en tant que root, comme il n'a pas de mot de passe valide)
Joe
2
@Joe, j'ai envisagé d'ajouter ces informations, mais j'ai omis pour des raisons de concision. Comme vous le décrivez, sudoc'est un utilitaire assez robuste et couvrir même des fonctionnalités de base ici finirait par confondre ou submerger le public cible à la recherche d'une différenciation entre sudoet su.
Aaron Lake
"La principale différence entre sudo et su est que sudo exécute une commande en tant que root, alors que su vous fait root" - false, sudo -sexécute le shell ("vous fait root") et su -c commandexécute la commande en tant que root.
el.pescado
2
Encore une fois, par souci de concision, j'ai omis les nombreuses méthodes alternatives d'utilisation sudo. De plus, vous ne pouvez pas le faire su -c commandpar défaut sur OS X, car vous ne connaissez pas le mot de passe de root. Vous pouvez cependant sudo sumodifier le mot de passe su -c command. Je pense que la question a été répondue, et il n'y avait pas besoin d'approfondir les utilisations alternatives de sudo et su. Cependant, je mettrai à jour le message pour les curieux.
Aaron Lake