Quelle est la différence entre les commandes «su -s» et «sudo -s»?


23

Quelle est la différence entre les deux commandes de super-utilisateur su -set sudo -s?

Ils donnent tous deux un shell avec accès au compte superutilisateur.

Réponses:


30

En pratique, ils feront tous les deux de vous le superutilisateur. Cependant, ils font des choses légèrement différentes, de manières légèrement différentes.

Tout d'abord, su -vous fait basculer vers un shell de connexion, alors sudo -sque non. En pratique, cela signifie souvent que vos variables d'environnement ne seront pas basculées sur rootpour sudo -s. Notez que vous pouvez exécuter juste supour ne pas obtenir un shell de connexion, ou sudo -ipour obtenir un shell de connexion [pas dans toutes les versions].

Deuxièmement, suet su -passez à un nouvel utilisateur en vous demandant de vous authentifier en tant que nouvel utilisateur. sudo -set sudo -i(et juste régulier sudo foo) vous permet d'exécuter une commande pour laquelle vous êtes pré-autorisé [voir /etc/sudoers], éventuellement en vous demandant de confirmer votre ID actuel .

Si vous voulez être vraiment mignon, vous pouvez également exécuter sudo su -, qui demandera de vous connecter en tant que root ( su -) exécuté par l'utilisateur root (la sudopartie).

Si l'utilisateur root est verrouillé (comme sur Ubuntu), vous ne pourrez pas vous connecter en tant que root en utilisant su. Dans ce cas, vous devrez utiliser sudo -sousudo -i


5
Il convient également de dire que sur de nombreuses distributions, sudoaucun privilège par défaut n'est accordé aux utilisateurs réguliers. Sur ces systèmes, suest la seule option.
Télémaque le

12
su -s

Bascule vers un utilisateur (dans ce cas, root) et lance le shell que vous spécifiez, ou l'une des quelques autres méthodes de détermination du shell. C'est utile si vous voulez utiliser zsh ou un autre shell comme root vraiment rapide ... et pour une raison quelconque vous n'utilisez pas sudo.

sudo -s

Exécute simplement un shell en utilisant sudo, ce qui vous donnerait un shell racine. Vous pouvez également lui passer un shell.

su -s est plus ancien, beaucoup plus ancien que la commande sudo -s. Je suppose que le développeur essaie de faciliter le plus possible l'utilisation de sudo.


9

su est une commande pour passer à un autre utilisateur, soit pour exécuter un shell, soit pour exécuter une commande spécifique. Vous devez vous authentifier en tant qu'autre utilisateur. Si vous voulez passer en root, vous avez besoin du mot de passe root.

sudo est une commande pour exécuter une autre commande (éventuellement un shell) en tant qu'utilisateur différent. Vous devez vous authentifier en tant que votre propre utilisateur . L'autorisation d'utiliser sudo (et les actions spécifiques que vous pouvez en faire) sont spécifiées par un administrateur dans le fichier sudoers.

Si vous donnez accès à su à quelqu'un (en lui donnant, par exemple, le mot de passe root), il peut faire n'importe quoi avec lui - exécuter d'autres commandes, ouvrir un shell, changer le mot de passe, se connecter à distance via ssh, etc. Vous leur donnez essentiellement accès à l'autre compte, «su» n'étant qu'une chose qu'ils peuvent faire avec.

sudo est beaucoup plus fin. Vous pouvez accorder des privilèges à un utilisateur ou à un groupe. Vous pouvez autoriser un utilisateur ou un groupe à créer un sudo dans un certain délai (par exemple, du lundi au vendredi, de 9 h à 17 h). Vous pouvez spécifier une liste spécifique de commandes qu'ils sont autorisés à exécuter (par exemple uniquement / usr / local / bin / run_backup) ou vous pouvez spécifier un utilisateur spécifique auquel ils sont autorisés à exécuter des commandes (par exemple www, backup, staff, etc. ).

Outre sa flexibilité, sudo est une meilleure solution dans tous les cas, car il ne nécessite pas l'accès à tout ce que l'utilisateur n'a pas déjà. Si vous donnez l'accès à sudo à quelqu'un, vous pouvez le révoquer en supprimant sa ligne dans le fichier sudoers ou en le supprimant du groupe sudoers. Si vous supprimez leur compte, leur accès a disparu.

Si vous leur donnez le mot de passe root, même en supposant qu'ils ne font rien de désagréable avec eux, ils le sauront pour toujours. Si plusieurs personnes ont besoin d'un accès root pour les tâches administratives, cela signifie soit changer tous les mots de passe root chaque fois que quelqu'un part, soit supposer qu'il est acceptable pour eux d'avoir un accès complet à vos systèmes après votre départ.


bonne explication des différences entre les deux commandes su et sudo.
John aka hot2use

5
  • su vous demandera le mot de passe de l'utilisateur root .
  • sudo vous demandera votre mot de passe (et vous devez être autorisé à accéder à sudo pour ce faire).

2
Il s'agit généralement du comportement par défaut de sudo, mais il peut également être configuré pour vous demander la racine ou un autre mot de passe.
theotherreceive

2

De Wikipédia :

su (abréviation de substitute user ou switch user) est une commande Unix utilisée pour exécuter le shell d'un autre utilisateur sans se déconnecter.

Une commande associée appelée sudo exécute une commande en tant qu'autre utilisateur mais observe un ensemble de contraintes concernant les utilisateurs qui peuvent exécuter quelles commandes en tant qu'autres utilisateurs (généralement dans un fichier de configuration nommé / etc / sudoers, mieux modifiable par la commande visudo). Contrairement à su, sudo authentifie les utilisateurs par rapport à leur propre mot de passe plutôt qu'à celui de l'utilisateur cible (pour permettre la délégation de commandes spécifiques à des utilisateurs spécifiques sur des hôtes spécifiques sans partager de mots de passe entre eux et tout en atténuant le risque de terminaux sans surveillance).


2

Une chose qui n'est pas entièrement expliquée est la suivante: celle que vous pouvez utiliser dépend souvent de la distribution que vous utilisez et de qui l'exécute. L'un ou l'autre ( suou sudo) n'est probablement pas configuré pour une utilisation complète par défaut. Ainsi, par exemple, comme certaines personnes l'ont mentionné, OS X et Ubuntu désactivent le compte root ( su) par défaut. De même, Debian ne donne aucun privilège par défaut aux utilisateurs réguliers sudo. (Sur tous ces systèmes, vous pouvez modifier ces valeurs par défaut, mais uniquement si vous disposez d'une sorte de privilèges administratifs pour commencer. Je suppose que nous parlons d'une situation non liée au serveur et que vous administrez la machine puisque nous sommes sur SU plutôt que SF, mais juste au cas où.)

Enfin, si vous souhaitez utiliser sudode manière plus fine, vous devez rechercher man sudoerscomment modifier le fichier / etc / sudoers . Cependant, vous ne devez jamais le modifier à la main. Utilisez le programme visudo - il vous empêchera de sauvegarder vos modifications à moins qu'elles soient au moins minimalement sensées. C'est une excellente protection contre les erreurs simples qui pourraient vous exclure des privilèges d'administrateur de votre propre système.


1

Sur les systèmes où le compte superutilisateur est désactivé, tels que Mac OS X, sune fonctionnera pas; sudo -svolonté.

De plus, il semble qu'il n'y en ait pas su -s, du moins sur ma machine.


L'inverse est souvent vrai. Autrement dit, sur de nombreuses distributions plus anciennes de type Unix, les utilisateurs ordinaires n'ont pas de privilèges par défaut sous sudo(qui n'est même pas toujours installé).
Télémaque le

1

Cette introduction peut vous aider. suest un raccourci su rootet vous conservez vos droits en tant qu'autre utilisateur indéfiniment. Plus dangereux, mais aussi plus pratique si vous effectuez de nombreuses commandes d'accès root sur une période de temps.


1

su créera essentiellement un nouveau shell de connexion avec un autre privilège utilisateur (login) sudo vous permettra temporairement d'exécuter la commande en utilisant l'utilisateur que vous avez spécifié. Sur certains UNIX comme FreeBDS, il n'y a pas d'options «-s».

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.