Lorsque je fais quelque chose qui nécessite que root soit tapé des dizaines de fois de suite, je préfère basculer ma session sur une session root. Dans les différents tutoriels et des instructions que je l' ai utilisé sur Internet, je vois sudo su
, sudo su -
, sudo -i
et sudo /bin/bash
utilisé pour ouvrir une session racine, mais je ne suis pas clair sur la différence entre ceux - ci et quand ou si cette question de différence.
Quelqu'un peut-il éclaircir cela pour moi?
command-line
bash
sudo
su
Paul
la source
la source
sudo -s
etsudo su
.Réponses:
Pour expliquer cela, vous devez savoir ce que font les programmes:
su
- La commandesu
est utilisée pour passer à un autre utilisateur ( s witch u ser), mais vous pouvez également passer à l'utilisateur root en appelant la commande sans paramètre.su
vous demande le mot de passe de l'utilisateur à changer, après avoir tapé le mot de passe que vous avez changé dans l'environnement de l'utilisateur.sudo
-sudo
est destiné à exécuter une seule commande avec les privilèges root. Mais contrairement àsu
cela, il vous demande 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:
Les cas sont donc:
sudo su
Appelssudo
avec la commandesu
. Bash est appelé shell interactif sans connexion. Donc, bash ne fait qu'exécuter.bashrc
. Vous pouvez voir qu'après le passage à la racine, vous êtes toujours dans le même répertoire: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 root avec son environnement.sudo -i
C'est presque la même chose que l'sudo su -
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 appelezsudo
avec la commande/bin/bash
./bin/bash
est lancé en tant que shell sans connexion, de sorte que tous les fichiers de points ne sont pas exécutés, mais bash lit lui-même.bashrc
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$SHELL
variable et exécute le contenu. Si$SHELL
contient/bin/bash
il appellesudo /bin/bash
(voir ci-dessus).Vérifier:
Pour vérifier si vous êtes dans un shell de connexion ou non (ne fonctionne que dans bash car
shopt
est une commande intégrée):la source
sudo
permet à un utilisateur autorisé d'exécuter une commande en tant que superutilisateur ou autre utilisateur . Quoi qu'il en soit, +1 pour vos efforts.root
session utilisateur (et non pour utilisersudo
) est lorsque je fais quelque chose qui nécessite une utilisation intensive deroot
privilèges, par exemple pour installer quelque chose de nouveau ou effectuer une reconfiguration majeure. . Je l'utilisesudo /bin/bash
, mais apparemment, cette méthode a une mauvaise réputation pour une raison que je ne comprends pas.sudo -i
est suggéré. Lisez ici: ubuntuforums.org/showthread.php?t=1817402 et ici: unix.stackexchange.com/questions/98531/...Pour rechercher des différences, vous pouvez vérifier l’environnement résultant parmi différentes invocations.
Vous pourriez trouver quelques "petites" différences dans certaines variables critiques:
PATH
,LD_LIBRARY_PATH
,LD_PRELOAD
ou une différence dans ~ /. traitement des fichiers de points (
~/.config
).Pensez également à la propriété des fichiers journaux (
~/.xsession.errors
, etc ...) basés sur $ HOME ou des cookies xauth (~/.Xauthority
) générés par les commandes.Essayez ces commandes:
la source