J'ai vu de nombreux commentaires ici dans Ask Ubuntu concernant la préférence d'utilisation sudo -s
plutôt que sudo su
.
Pour moi, ces deux commandes font exactement la même chose. Mais pourquoi est-ce sudo -s
censé être mieux?
J'ai vu de nombreux commentaires ici dans Ask Ubuntu concernant la préférence d'utilisation sudo -s
plutôt que sudo su
.
Pour moi, ces deux commandes font exactement la même chose. Mais pourquoi est-ce sudo -s
censé être mieux?
Réponses:
Je pense que ce sudo -s
n'est pas "mieux", c'est juste différent.
sudo -s
conserve votre répertoire $ HOME, donc lorsque vous démarrez des programmes, ils utiliseront vos fichiers de configuration (et non root), etc. Inconvénient: ils peuvent également changer la propriété de vos fichiers dans le répertoire $ HOME, un exemple typique est le .Xauthority
fichier, mais je n'ont jamais rencontré de problème avec ça.
sudo su
ou sudo -i
les programmes utiliseront le répertoire personnel de la racine et ses fichiers de configuration. Cela peut être plus intuitif, mais cela signifie également qu'il n'utilisera aucune configuration que vous auriez définie pour vous-même (alias, historique de bash, ...).
Parce sudo -s
que ne changera pas vos variables d'environnement, en particulier $HOME
, qui resteront HOME=/home/USER
. Si vous utilisez, sudo su
cela changera, HOME=/root
ce qui peut avoir des effets secondaires négatifs lorsque les programmes que vous démarrez tentent d'accéder au répertoire personnel de votre utilisateur.
Donc, fondamentalement, c'est comme sudo
vs gksudo
lors de l'exécution de programmes graphiques.
Mis à part les différences déjà mentionnées avec les variables d'environnement, je trouve sudo su
stupide et inutile parce que vous demandez sudo
à exécuter en su
tant que root et lui demandez d'exécuter un shell en tant que root. Pourquoi demander à un programme de demander à un programme de vous donner un shell racine, alors que vous pouvez simplement demander au premier programme de vous donner ce shell? Est-ce important dans un sens pratique? Non, je suis juste pédant.
sudo su
pour être root, oui, allez-y sudo -i
, par exemple. Mais elle aide quand vous voulez devenir un autre utilisateur: sudo su - myuser
.
sudo -i
changera de /root
répertoire et sudo su
restera dans le répertoire que vous êtes.
sudo -u myuser
.
Je ne serais pas d'accord avec d'autres réponses lorsque l'on considère les cas où vous souhaitez vous connecter en tant qu'utilisateur n'ayant pas de shell. C'est un cas très courant avec des utilisateurs affectés à des services.
L'utilisation de "sudo su" démarrera le shell spécifié par l'utilisateur. Cependant, dans le cas d'un utilisateur affecté au processus serveur, le shell est / usr / bin / false et la journalisation échouera. Au lieu de cela, vous devez entrer en tant que:
sudo -sHu <server-user>
qui vous connectera et cd à son chemin d'accueil, même si l'utilisateur n'a pas de shell assigné
sudo -i
ousudo su
vaut mieux quesudo -s
pour les raisons mentionnées ici: ubuntuforums.org/showpost.php?p=6188826&postcount=4 Aussi: il s'agit d'un doublon possible de superuser.com/questions/29/…