web-dev-qa-db-fra.com

'Sudo su -' vs 'Sudo -i' vs 'Sudo / bin / bash' - Quand est-il important d'utiliser ou pas du tout?

Lorsque je fais quelque chose qui nécessite que root soit tapé des dizaines de fois à la suite, je préfère basculer ma session en une session root. Dans les divers tutoriels et instructions que j'ai utilisés sur Internet, je vois que Sudo su, Sudo su -, Sudo -i et Sudo /bin/bash sont utilisés pour ouvrir une session racine, mais je ne vois pas trop bien la différence entre ceux-ci et quand ou si cette différence a de l'importance.

Quelqu'un peut-il éclaircir cela pour moi?

241
Paul

Pour expliquer cela, vous devez savoir ce que font les programmes:

  • su - La commande su permet de basculer vers un autre utilisateur (s sorcière ser), mais vous pouvez également basculer vers l'utilisateur root en appelant la commande sans paramètre. su vous demande le mot de passe de l'utilisateur à changer, après avoir saisi le mot de passe que vous avez changé pour l'environnement de l'utilisateur.
  • Sudo - Sudo permet d'exécuter une seule commande avec les privilèges root. Mais contrairement à su, il vous invite à entrer le mot de passe de l'utilisateur actuel. Cet utilisateur doit figurer dans le fichier sudoers (ou un groupe figurant dans le fichier sudoers). Par défaut, Ubuntu "se souvient" de votre mot de passe pendant 15 minutes, vous évitant ainsi de le saisir à chaque fois.
  • bash - Une interface texte pour interagir avec l'ordinateur. Il est important de comprendre la différence entre les shells de connexion, non connectés, interactifs et non interactifs:

Types de coquilles:

  • shell de connexion: Un shell de connexion vous connecte au système en tant qu'utilisateur spécifié. Pour cela, un nom d'utilisateur et un mot de passe sont nécessaires. Quand vous frappez ctrl+alt+F1 Pour vous connecter à un terminal virtuel, vous obtenez, après une connexion réussie, un shell de connexion.
  • Shell non connecté: Un shell exécuté sans connexion est nécessaire pour cela, il s'agit d'un utilisateur actuellement connecté. Lorsque vous ouvrez un terminal graphique dans gnome, il s’agit d’un shell non connecté.
  • shell interactif: un shell (connecté ou non connecté) dans lequel vous pouvez taper ou interrompre des commandes de manière interactive. Par exemple un terminal gnome.
  • Shell non interactif: Un (sous) Shell probablement exécuté à partir d'un processus automatisé. Vous ne verrez ni entrée ni sortie.

Les cas sont donc:

  • Sudo su Appelle Sudo avec la commande su. Bash est appelé Shell interactif sans connexion. Donc, bash n’exécute que .bashrc. Vous pouvez voir qu'après le passage à la racine, vous êtes toujours dans le même répertoire:

    user@Host:~$ Sudo su
    root@Host:/home/user#
    
  • Sudo su - Cette fois, c'est un shell de connexion, donc /etc/profile, .profile et .bashrc sont exécutés et vous vous retrouverez dans le répertoire de base de la racine avec son environnement.

  • Sudo -i Il est presque identique à Sudo su -. L'option -i (simuler la connexion initiale) exécute le shell spécifié par l'entrée de la base de données de mots de passe de l'utilisateur cible en tant que shell de connexion. Cela signifie que les fichiers de ressources spécifiques à la connexion, tels que .profile, .bashrc ou .login, seront lus et exécutés par le shell.

  • Sudo /bin/bash Cela signifie que vous appelez Sudo à l'aide de la commande /bin/bash. /bin/bash est lancé en tant que shell non connecté; ainsi, tous les fichiers de points ne sont pas exécutés, mais bash lit lui-même .bashrc de l'utilisateur appelant. Votre environnement reste le même. Votre maison ne sera pas la maison de root. Donc, vous êtes root, mais dans l'environnement de l'utilisateur appelant.

  • Sudo -s lit la variable $Shell et exécute le contenu. Si $Shell contient /bin/bash, il appelle Sudo /bin/bash (voir ci-dessus).

Contrôle:

Pour vérifier si vous êtes dans un shell de connexion ou non (fonctionne uniquement avec bash car shopt est une commande intégrée):

shopt -q login_Shell && echo 'Login Shell' || echo 'No login Shell'
310
chaos