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

28

J'aimerais savoir quelle est la différence entre

  • su -
  • sudo bash
  • sudo sh

Je ne peux pas me connecter en tant que root en utilisant su - car je n'ai pas le mot de passe root - je veux dire j'ai mon mot de passe utilisateur avec lequel je peux sudo "command" Je peux me connecter en tant que root avec su - avec mon mot de passe utilisateur et je peux me connecter tout en effectuant sudo bash mais j'obtiens une invite de commande sous cette forme sudo sh

    
posée Patryk 14.08.2011 - 13:04
la source

2 réponses

25

Contexte

Sous Linux (et Unix en général), il existe un SuperUser nommé Racine . Le SuperUser peut faire tout et n'importe quoi, et faire un travail quotidien en tant que SuperUser peut être dangereux. Vous pouvez taper une commande de manière incorrecte et détruire le système. Idéalement, vous exécutez en tant qu'utilisateur qui ne dispose que des privilèges requis pour la tâche en cours. 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 permet de se connecter au compte root.
Par défaut, le mot de passe du compte Root 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 racine. Cependant, comme le compte racine existe physiquement, il est toujours possible d'exécuter des programmes avec des privilèges de niveau racine. C'est là que sudo entre en jeu - 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 un 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 exécute les 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 en langage de commande. Bash est un shell compatible sh qui intègre des fonctionnalités utiles du shell Korn (ksh) et du shell C (csh). Il est destiné à être conforme à la norme Shell et outils IEEE POSIX P1003.2 / ISO 9945.2. 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 .

    
réponse donnée desgua 14.08.2011 - 13:43
la source
6

su - :

Cela changera votre identifiant 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 modifiez le mot de passe root).

sudo bash & amp; sudo sh :

Tout ce qui suit le sudo est un programme à exécuter. Dans ce cas, vous devez exécuter deux shells, respectivement bash et dash. utilisez man bash et man sh pour plus de détails sur les différents shells.

Questions connexes:

réponse donnée fossfreedom 14.08.2011 - 13:34
la source

Lire d'autres questions sur les étiquettes