web-dev-qa-db-fra.com

Que fait réellement "Sudo -s"?

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?

25
Leem

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.

9
TomH

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).
6
RKelley

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.

3
Anarko_Bizounours

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)!

1
jopasserat

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.

0
Noah Duncan