Pourquoi sudo -s est-il meilleur que sudo su?

27

J'ai vu beaucoup de commentaires ici dans Ask Ubuntu concernant la préférence pour utiliser sudo -s plutôt que sudo su .

Pour moi, ces deux commandes font exactement la même chose. Mais pourquoi sudo -s est-il censé être meilleur?

    
posée fitojb 04.10.2011 - 06:33
la source

4 réponses

26

Je pense que sudo -s n'est pas "meilleur", c'est juste différent.

sudo -s

conserve votre répertoire $ HOME. Ainsi, lorsque vous démarrez des programmes, ils utiliseront vos fichiers de configuration (et non ceux de la racine), etc. Inconvénient: ils peuvent également modifier la propriété de vos fichiers dans le répertoire $ HOME. Exemple typique: .Xauthority file, mais je n’ai jamais eu de problème avec cela.

sudo su ou sudo -i

Les programmes

utiliseront le répertoire de base de la racine et ses fichiers de configuration. Cela peut sembler plus intuitif, mais cela signifie également qu’il n’utilisera pas la configuration que vous vous êtes définie (alias, historique bash, ...).

    
réponse donnée arrange 04.10.2011 - 11:33
la source
13

Parce que sudo -s ne modifiera pas vos variables d'environnement, en particulier $HOME , qui restera HOME=/home/USER . Si vous utilisez sudo su , cela deviendra 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 de base de votre utilisateur.

En gros, cela ressemble à sudo vs gksudo lors de l'exécution de programmes graphiques.

    
réponse donnée htorque 04.10.2011 - 10:12
la source
5

Mis à part les différences déjà mentionnées avec les variables d'environnement, je trouve sudo su stupide et inutile, car vous demandez à sudo de lancer su en tant que root et de lui demander d'exécuter un shell en tant que root. Pourquoi demander à un programme de demander à un programme de vous donner un shell root, alors que vous pouvez simplement demander au premier programme de vous donner ce shell? Est-ce important dans la pratique? Non, je suis juste pédant.

    
réponse donnée psusi 04.10.2011 - 20:26
la source
3

Je ne suis pas d’accord avec d’autres réponses lors de l’examen des cas dans lesquels vous souhaitez vous connecter en tant qu’utilisateur qui n’a pas de shell. C’est un cas très courant avec des utilisateurs affectés à des services.

L'utilisation de "sudo su" lancera le shell spécifié par l'utilisateur. Toutefois, 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 vers son chemin de départ, même si l'utilisateur n'a pas de shell assigné

    
réponse donnée SystematicFrank 09.11.2012 - 13:48
la source

Lire d'autres questions sur les étiquettes