Quelle est la différence entre les deux commandes de super-utilisateur su -s
et sudo -s
?
Ils donnent tous deux un shell avec accès au compte superutilisateur.
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 -s
que non. En pratique, cela signifie souvent que vos variables d'environnement ne seront pas basculées sur root
pour sudo -s
. Notez que vous pouvez exécuter juste su
pour ne pas obtenir un shell de connexion, ou sudo -i
pour obtenir un shell de connexion [pas dans toutes les versions].
Deuxièmement, su
et su -
passez à un nouvel utilisateur en vous demandant de vous authentifier en tant que nouvel utilisateur. sudo -s
et 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 sudo
partie).
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 -s
ousudo -i
sudo
aucun privilège par défaut n'est accordé aux utilisateurs réguliers. Sur ces systèmes,su
est la seule option.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.
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.
la source
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.
la source
la source
De Wikipédia :
la source
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 (
su
ousudo
) 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égulierssudo
. (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
sudo
de manière plus fine, vous devez rechercherman sudoers
comment 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.la source
Sur les systèmes où le compte superutilisateur est désactivé, tels que Mac OS X,
su
ne fonctionnera pas;sudo -s
volonté.De plus, il semble qu'il n'y en ait pas
su -s
, du moins sur ma machine.la source
sudo
(qui n'est même pas toujours installé).Cette introduction peut vous aider.
su
est un raccourcisu root
et 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.la source
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».
la source