Pourquoi l'un est-il préféré à l'autre dans cet exemple?
sudo su
echo "options iwlwifi 11n_disable=1" >> /etc/modprobe.d/iwlwifi.conf
exit
Veuillez fournir des liens vers la documentation Ubuntu.
command-line
sudo
chili555
la source
la source
Réponses:
La
sudo su
commande signifie «changer d'utilisateur» et vous permet de devenir un autre utilisateur. Il permet à un utilisateur autorisé d'exécuter une commande en tant que superutilisateur ou autre utilisateur, comme spécifié dans le fichier sudoers.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 ou .login seront lus par le shell. Si une commande est spécifiée, elle est transmise au shell pour exécution via l'option ‑c du shell. Si aucune commande n'est spécifiée, un shell interactif est exécuté.
Source: ManPage
la source
sudo su
on vous demande votre mot de passe, pas le mot de passe root. L'utilisateur root n'a même pas besoin d'avoir un mot de passe. Quoi qu'il en soit, si un administrateur utilise le mot de passe root, cela n'implique pas que tous les utilisateurs réguliers le connaissent.sudo
s'exécute ensu
tant que root, et root peutsu
à tout utilisateur sans connaître leur mot de passe. Les malentendus fondamentaux sur le fonctionnement du système méritent un recul de l'OMI.sudo -i
ne demandera pas non plus le mot de passe de root, donc ce n'est pas pertinent pour la question.sudo su
change uniquement l'utilisateur actuel en root. Les paramètres d'environnement (comme PATH) restent les mêmes.sudo -i
crée un nouvel environnement comme si root venait de se connecter.La différence est plus notable si vous utilisez d'autres utilisateurs. Après
sudo su bob
tu seras bob, mais au même endroit. Après,sudo -i -u bob
vous serez bob, dans le répertoire personnel de bob, avec le shell par défaut de bob et avec bob.profile
et tous les autres scripts de connexion ayant été exécutés.Voir
man sudo
pour plus de détails sur ce qui se-i
passe. Malheureusement,man su
les détails sont légers.Trouvé une version de
man su
(de login-1: 4.1.4.2 + svn3283-3ubuntu5.1) qui dit ce qui suit:Donc, si et dans quelle mesure les
sudo su
changements de l'environnement dépendent de votre distribution et de votre configuration. C'est doncsudo -i
théoriquement plus portable.la source
su
fait les paramètres d'environnement de changement, et peut être utilisé pour simuler une connexion à l' aide-
ou-l
. Même sans-l
,$PATH
est changé. Testez ces affirmations avant de les faire! (Vouliez-vous dire que celaPWD
ne change pas?)sudo su -
etsudo -i
?$PATH
change lorsque j'utilisesu
sanssudo
(en utilisant le mot de passe root). Seloninfo su
(ce qui pourrait être une meilleure chose à lier dans votre réponse),su
lit en effet l'entrée du mot de passe pour l'utilisateur que vous devenez. Il est possible que le$PATH
changement que j'observe dépend du système (je suis sur Debian 7).man su
(qui est plus long que celui auquel vous avez lié) dit qu'il en fait partieshadow-utils 4.1.5.1
. Maman
page indique également que cela$PATH
est défini même s'il--preserve-environment
est utilisé. Donc je suppose que c'est vraiment juste une différence entre les différentes versions desu
./etc/pam.d/sudo
et/etc/pam.d/su
peut être configuré pour faire des choses complètement différentes ou exactement les mêmes.Le problème principal est l'un des paramètres d'environnement (pas si) sains.
L'utilisation
sudo su
du nouveau shell obtient son environnement de l'utilisateur qui émet la commande - ce qui peut être problématique.Avec
sudo -i
vous obtenez une coque racine propre.Voir les notes spéciales sur le sudo et les coquilles
Reste à noter qu'il est rarement nécessaire de créer un shell racine.
la source
sudo -i
c'est similaire àsudo su -
, qui en fait ne reçoivent pas son environnement de l'utilisateur émettant la commande.sudo su
contresudo -i
.