Que fait réellement «sudo -s»?


26

J'utilise ubuntu 10.04.

Je remarque qu'après avoir exécuté " sudo -s " dans le terminal, l'invite est passée de

" XXX @ XXX "

à

" root @ XXX ",

semble avoir changé en privilège root.

Mais quand 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 fait " sudo -s " exactement?


6
Vous devriez demander ceci sur askubuntu.com

7
Pourquoi askubuntu.com? sudon'est pas spécifique à Ubuntu ...
Dave Sherohman

Réponses:


9

Les deux ne sont pas vraiment incompatibles - la sudocommande change toujours d'utilisateur, soit en root, soit en l'utilisateur que vous spécifiez avec le -ucommutateur. La seule -schose à faire est de fournir un raccourci pour démarrer un shell en tant qu'utilisateur. C'est vraiment équivalent à:

sudo $SHELL

sauf qu'il se repliera probablement sur /bin/shou quelque chose s'il SHELLn'est pas défini.


6

sudo -sexécute le shell spécifié dans votre $SHELLvariable d'environnement en tant que superutilisateur / root. Vous pouvez spécifier un autre utilisateur à l'aide de -u.

La $SHELLvariable d'environnement contient le chemin d'accès au shell de connexion par défaut de l'utilisateur. Le paramètre réel du programme shell par défaut se trouve généralement dans 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 invoquez ensuite bash, $ SHELL ne changera pas de /bin/zsh.

Affichez le programme utilisateur et shell actuel: 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).

3

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 s'il est défini ou le shell comme spécifié dans passwd (5).

Plus sérieusement, les sudo -s exécutent une variable d'environnement shell. Puisque vous n'avez ajouté aucune variable, il s'exécute comme spécifié dans passwd, et vous connectez donc en tant que root.


1
Il n'est pas évident d'après le manuel que si vous ne fournissez pas d'utilisateur, il est par défaut root. Vous devriez lire la description de l' -uoption pour l'apprendre. Mais pour quelqu'un qui ne connaît pas sudo, ils ne sauraient pas regarder -u.
wisbucky


0

Il semble qu'il crée une autre instance du shell au-dessus du shell actuel, mais avec les privilèges root. Je parie qu'après avoir fait sudo -ssi vous tapez exit, vous reviendrez au shell d'origine.


-1

sudo -s 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.

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.