J'utilise Ubuntu 10.04.
Je remarque qu'après avoir lancé " Sudo -s " dans le terminal, l'invite a changé de
" XXX @ XXX "
à
" racine @ XXX ",
semble avoir changé pour le privilège root.
Mais lorsque je vérifie la documentation de la commande "Sudo" ici , cela explique une autre histoire de "Sudo -s". Quelqu'un peut-il m'expliquer ce que " Sudo -s "faire exactement?
Les deux ne sont pas vraiment incohérents - la commande Sudo
change toujours l’utilisateur, en utilisateur root ou en utilisateur spécifié avec le commutateur -u
. Tout ce que le -s
fournit, c’est un raccourci pour lancer un shell en tant qu’utilisateur. C'est vraiment équivalent à:
Sudo $Shell
sauf qu'il retombera probablement sur /bin/sh
ou quelque chose si Shell
n'est pas défini.
Sudo -s
exécute le shell spécifié dans votre variable d'environnement $Shell
en tant que superutilisateur/racine. Vous pouvez spécifier un autre utilisateur à l'aide de -u
.
La variable d'environnement $Shell
contient le chemin d'accès au shell de connexion par défaut de l'utilisateur. Le paramètre actuel du programme Shell par défaut est généralement etc/passwd
. Selon ce que vous avez fait dans votre session actuelle, la variable $ Shell peut ne pas contenir le programme Shell que vous utilisez actuellement. Si vous vous connectez automatiquement avec zsh par exemple, mais que vous appelez ensuite bash, $ Shell ne changera pas de /bin/zsh
.
Afficher l'utilisateur actuel et le programme Shell: echo $(whoami) is logged in and Shell is $0
whoami
imprime le nom d'utilisateur sous lequel l'utilisateur travaille.$0
contient le nom/chemin du programme en cours d'exécution (programme Shell dans ce cas).Du manuel:
Sudo permet à un utilisateur autorisé d'exécuter une commande en tant que superutilisateur ou autre utilisateur, comme spécifié dans le fichier sudoers.
-s Shell, exécute le Shell spécifié par la variable d'environnement Shell si elle est définie ou le Shell, comme spécifié dans passwd (5).
Plus sérieusement, les Sudo exécutent une variable d’environnement Shell. Puisque vous n'avez ajouté aucune variable, il est exécuté comme spécifié dans passwd, et connectez-vous en tant que root.
Jetez un coup d'œil à ce billet de superutilisateur:
Quelle est la différence entre les commandes "su -s" et "Sudo -s"?
À propos, votre message devrait être déplacé vers le superutilisateur (ou askubuntu comme indiqué dans les commentaires)!
Il semble que cela crée une autre instance du shell par-dessus le shell en cours, mais avec les privilèges root. Je parierai qu'après cela Sudo -s
, si vous tapez exit, vous retournerez au shell d'origine.