Je l'ai déjà lu dans le manuel mais je ne vois pas la différence ..
su
- changer l'ID utilisateur ou devenir superutilisateur
sudo -s [command]
L' -s
option (shell) exécute le shell spécifié par la variable d'environnement SHELL si elle est définie ou le shell spécifié dans passwd (5). Si une commande est spécifiée, elle est transmise au shell pour exécution. Sinon, un shell interactif est exécuté.
sudo -i
disparaît description dans le manuel
su user
pour vous connecter à partir de shells non fiables, maissu - user
. Voir unix.stackexchange.com/q/7013/8250sudo -i
c'est mauvais, mais vous pouvez certainement vous en servirRéponses:
La principale différence entre ces commandes réside dans la manière dont elles restreignent l'accès à leurs fonctions.
su
(ce qui signifie "utilisateur suppléant" ou "utilisateur de commutateur") - fait exactement cela, il démarre une autre instance de shell avec les privilèges de l'utilisateur cible. Pour vous assurer que vous avez le droit de le faire, il vous demande le mot de passe de l'utilisateur cible . Donc, pour devenir root, vous devez connaître le mot de passe root. Si plusieurs utilisateurs de votre ordinateur doivent exécuter des commandes en tant que root, ils doivent tous connaître le mot de passe root. Notez que ce sera le même mot de passe. Si vous devez révoquer les autorisations d'administrateur de l'un des utilisateurs, vous devez modifier le mot de passe root et le transmettre uniquement aux personnes qui doivent conserver l'accès - en désordre.sudo
(hmm ... quel est le mnémonique? Super-User-DO?) est complètement différent. Il utilise un fichier de configuration (/ etc / sudoers) qui répertorie les utilisateurs autorisés à exécuter des actions spécifiques (commandes d'exécution en tant qu'utilisateur root, etc.). Lorsqu'il est appelé, il demande le mot de passe de l'utilisateur qui l'a lancé - pour garantir terminal est vraiment le même "joe" qui est répertorié dans/etc/sudoers
. Pour révoquer les privilèges d'administrateur d'une personne, il vous suffit de modifier le fichier de configuration (ou de supprimer l'utilisateur d'un groupe répertorié dans cette configuration). Cela se traduit par une gestion beaucoup plus propre des privilèges.En conséquence, dans de nombreux systèmes basés sur Debian,
root
aucun mot de passe n’est défini, c’est-à-dire qu’il est impossible de se connecter directement en tant que root.De plus,
/etc/sudoers
permet de spécifier des options supplémentaires - par exemple l' utilisateur X est seulement capable d'exécuter le programme Y , etc.La
sudo su
combinaison souvent utilisée fonctionne comme suit:sudo
vous demande d' abord votre mot de passe et, si vous y êtes autorisé, appelle la commande suivante (su
) en tant que super-utilisateur. Comme ilsu
est appelé parroot
, il ne vous est pas demandé de saisir le mot de passe de l'utilisateur cible. Donc,sudo su
vous permet d'ouvrir un shell en tant qu'autre utilisateur (y compris root), si vous êtes autorisé à accéder au superutilisateur par le/etc/sudoers
fichier.la source
su
tant que "changement d'utilisateur", mais toujours en tant que superutilisateur; le comportement par défaut sans le nom d'utilisateur d'un autre utilisateur (bien que cela ait du sens). Un article de wikipedia : "La commande su, également appelée super utilisateur [1] dès 1974, a également été appelée" utilisateur substitut "," utilisateur usurpateur "ou" utilisateur défini ", car elle permet de modifier le compte associé au compte courant. terminal (fenêtre). "sudo su
?sudo
vous permet d'exécuter des commandes dans votre propre compte utilisateur avec les privilèges root.su
vous permet de changer d'utilisateur pour que vous soyez réellement connecté en tant que root.sudo -s
exécute un shell avec les privilèges root.sudo -i
acquiert également l'environnement de l'utilisateur root.Pour voir la différence entre
su
etsudo -s
, faitescd ~
et ensuitepwd
après chacun d’eux. Dans le premier cas, vous serez dans le répertoire de base de la racine, car vous êtes la racine. Dans le second cas, vous serez dans votre propre répertoire personnel, car vous êtes vous-même avec les privilèges root.Il y a plus de discussion sur cette question exacte ici .
la source
cd ~
résultats soient différents est dû au fait que sudo n'a pas défini la variable d'environnement $ HOME.sudoers
fichier contrôle qui peut exécuter telle commande en tant qu'autre utilisateur, mais cela se produit avant que la commande ne soit exécutée. Cependant, une fois que vous avez été autorisé à démarrer un processus en tant que root, par exemple, le processus en cours possède un UID et un accès complet au système. Il n’est donc pas possible pour sudo de le restreindre. Encore une fois, vous êtes toujours soit vous-même, soit root, il n'y a pas de "demi-n-moitié". Ainsi, si lesudoers
fichier vous permet d’exécuter un shell en tant qu’utilisateur root, les autorisations dans ce shell seraient impossibles à distinguer d’un shell racine "normal".Cette réponse est une dupe de ma réponse sur une dupe de cette question , mettez ici la réponse canonique pour que les gens puissent la trouver!
La principale différence entre
sudo -i
etsudo -s
est:sudo -i
vous donne l'environnement racine, c'est-à-dire que votre~/.bashrc
est ignoré.sudo -s
vous donne l'environnement de l'utilisateur, donc votre~/.bashrc
est respecté.Voici un exemple, vous pouvez voir que j'ai une application
lsl
dans mon~/.bin/
répertoire qui est accessible viasudo -s
mais pas accessible avecsudo -i
. Notez également que l’invite Bash change comme il le fera avecsudo -i
mais pas avecsudo -s
:Bien que cela
sudo -s
soit pratique pour vous fournir l’environnement que vous connaissez bien, je recommande l’utilisation desudo -i
pour deux raisons:.bashrc
.la source
sudo -s
fournit un environnement familier à l'utilisateur?su
demande le mot de passe de l'utilisateur "root".sudo
demande votre propre mot de passe (et vérifie également si vous êtes autorisé à exécuter des commandes en tant que root, configuré via/etc/sudoers
- par défaut, tous les comptes d'utilisateurs appartenant aux groupes "admin" ou "sudo" sont autorisés à utiliser sudo).sudo -s
lance un shell en tant que root, mais ne change pas votre répertoire de travail.sudo -i
simule une connexion au compte root: votre répertoire de travail sera/root
, et les racines,.profile
etc. seront obtenues comme si vous vous connectiez.la source
sudo -s
est presque égal àsu
($ HOME est différent) etsudo -i
est égal àsu -
Dans Ubuntu ou un système connexe, je ne trouve pas beaucoup d’utilisation
su
dans le sens traditionnel du super-utilisateur.sudo
gère ce cas beaucoup mieux. Cependant, ilsu
est intéressant de devenir un autre utilisateur dans des situations ponctuelles où la configuration de sudoers serait stupide.Par exemple, si je répare mon système à partir d'un live CD / USB, je vais souvent monter mon disque dur et d'autres éléments nécessaires
chroot
dans le système. Dans un tel cas, ma première commande est généralement:De cette façon, je ne travaille pas en tant que root, mais en tant qu'utilisateur normal, et je l'utilise ensuite
sudo
comme il convient.la source
su
Demande le mot de passe root, devient root, ouvre un shell interactif sans connexion.su -
Demande le mot de passe root, devient root, ouvre un shell de connexion interactif.sudo -s
Demande vos mots de passe, devient root, ouvre un shell interactif sans login.sudo -i
Demande vos mots de passe, devient root, ouvre un shell de connexion interactif.La meilleure pratique consiste à utiliser ces deux.
sudo su
Demande votre mot de passe, devient root pendant une seconde et s'exécute ensu
tant que root`.sudo su -
Demande votre mot de passe, devient root pendant une seconde et s'exécute ensu -
tant que root.Donc, dans ce cas, vous
su
utilisezsudo
et vous n'avez pas besoin de connaître le mot de passe de root. Les résultats sont les mêmes quesu
etsu -
.la source