Quelle est la différence entre 'su -', 'sudo bash' et 'sudo sh'?

29

Je voudrais savoir quelle est la différence entre

  • su -
  • sudo bash
  • sudo sh

Je ne peux pas me connecter en tant que root en faisant su -parce que je n'ai pas le mot de passe root - je veux dire que j'ai mon mot de passe utilisateur avec lequel je peux sudo "command" mais ce mot de passe ne fonctionne pas car su - je peux me connecter en tant que root avec sudo bashavec mon mot de passe utilisateur et je peux me connecter tout en faire, sudo shmais je reçois une invite de commande sous cette forme #

Patryk
la source

Réponses:

27

Contexte

Sous Linux (et Unix en général), il existe un SuperUser nommé Root . Le SuperUser peut faire tout et n'importe quoi, et ainsi faire un travail quotidien car le SuperUser peut être dangereux. Vous pourriez taper une commande incorrectement et détruire le système. Idéalement, vous exécutez en tant qu'utilisateur qui ne dispose que des privilèges nécessaires pour la tâche à accomplir. Dans certains cas, il s'agit nécessairement de Root, mais la plupart du temps, il s'agit d'un utilisateur régulier.

su -

Cette commande est utilisée pour se connecter au compte root.
Par défaut, le mot de passe du compte racine est verrouillé dans Ubuntu. Cela signifie que vous ne pouvez pas vous connecter directement en tant que root ou utiliser la commande su pour devenir l'utilisateur root. Cependant, étant donné que le compte racine existe physiquement, il est toujours possible d'exécuter des programmes avec des privilèges de niveau racine. C'est là qu'intervient sudo - il permet aux utilisateurs autorisés (normalement les utilisateurs "administratifs") d'exécuter certains programmes en tant que root sans avoir à connaître le mot de passe root.

Voir Comment activer le compte racine .

sudo sh

Cette commande exécute "sh" en tant que super utilisateur.
L'utilitaire sh est un interpréteur de langage de commande qui doit exécuter des commandes lues à partir d'une chaîne de ligne de commande, de l'entrée standard ou d'un fichier spécifié.

sudo bash

Cette commande exécute "bash" en tant que super utilisateur.
Bash est l'interpréteur de commandes ou de langage de commande. Bash est un shell compatible sh qui incorpore des fonctionnalités utiles du shell Korn (ksh) et du shell C (csh). Il est conçu pour être conforme à la norme IEEE POSIX P1003.2 / ISO 9945.2 Shell and Tools. Il offre des améliorations fonctionnelles par rapport à sh pour la programmation et l'utilisation interactive. De plus, la plupart des scripts sh peuvent être exécutés par Bash sans modification.

Références: 1 , 2 , 3 .

desgua
la source
7
Il convient de noter que vous pouvez vous connecter en tant que super utilisateur en exécutant sudo su -sans mot de passe root. Parce que sudo exécute la su -commande avec les autorisations root, vous serez uniquement invité à entrer le mot de passe de l'utilisateur. Cela a l'avantage de configurer l'environnement de l'utilisateur root, ce qui ne peut pas être fait en exécutant simplement un shell avec sudo.
Aaron D
6

su -:

Cela changera votre identifiant d'utilisateur et héritera des variables d'environnement comme si vous vous étiez connecté avec cet utilisateur. Normalement, vous utiliseriez le format su - <userid>pour vous connecter en tant qu'utilisateur. Si vous supprimez le "userid", cela suppose que vous essayez de vous connecter en tant que root - ce que vous ne pouvez pas (sauf si vous changez le mot de passe root).

sudo bash& sudo sh:

Tout ce qui est après le sudo est un programme à exécuter - donc dans ces cas, vous demandez d'exécuter quelques shells - bash et dash respectivement. utiliser man bashet man shpour plus de détails sur les différents coques.


Questions connexes:

liberté libre
la source
Ok, merci pour la réponse mais quel est le mot de passe par défaut pour root alors? Où puis-je le trouver ?
Patryk
@lordmonkey root n'a pas de mot de passe et n'en a pas besoin. sudo -ivous donnera un shell de connexion comme vous le su -feriez, sauf que sudo vous demande votre mot de passe, pas celui de root.
geirha