Quelle est la différence entre sudo -i et sudo su -

Réponses:

30

Ils peuvent fournir des fonctionnalités proches de la même chose, mais il semble que 'sudo -i' soit plus léger et conserve quelques références utiles dans votre environnement.

Vous pouvez voir les processus supplémentaires en regardant 'ps auxf' (f vous donne une vue sur la forêt)

sudo -i donne cet arbre de processus

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4675  0.6  0.0  19512  2260 pts/0    S+   23:42   0:00  |           \_ -bash

sudo su - donne cet arbre de processus

jkrauska  4480  0.0  0.0  76828  1656 ?        S    23:38   0:00  |   \_ sshd: jkrauska@pts/0
jkrauska  4482  0.0  0.0  21008  3816 pts/0    Ss   23:38   0:00  |       \_ -bash
root      4687  0.5  0.0  43256  1488 pts/0    S    23:42   0:00  |           \_ su -
root      4688  0.5  0.0  19508  2252 pts/0    S+   23:42   0:00  |               \_ -su

Notez qu'ils partent du même processus bash pid, 4482, mais que su - semble engendrer une autre étape.)

Votre premier «sudo» élève déjà votre niveau d'accès à root. L'exécution de su sans spécifier de nom d'utilisateur dans sudo change l'utilisateur actuel en root deux fois.

Une autre façon d'enquêter est d'exécuter les deux commandes avec strace -f.

strace -f -o sudoi sudo -i

contre

strace -f -o sudosu sudo su -

Si vous différez ces deux straces, vous verrez plus d'exeve en cours d'exécution pour sudo su -.

Encore une chose.

sudo -i conserve les variables d'environnement supplémentaires définies par SUDO.

SUDO_USER=jkrauska
SUDO_UID=1000
SUDO_COMMAND=/bin/bash
SUDO_GID=1000

sudo su - clobbers ces variables.

Joel K
la source
Merci, je vous ai voté comme la bonne réponse. Encore une question, est-ce donc sudo su -inutile?
Howard
Si vous vouliez assommer les références SUDO, cela pourrait être utile. Donc pas inutile dans ce cas.
Joel K
Il existe également de grandes différences dans la gestion des arguments, la gestion des variables d'environnement et la sécurité lorsque vous devenez un utilisateur non root. Voir ce que j'ai ajouté ici: serverfault.com/q/601140/102814
Craig Ringer
1

Réponse: Non, ce ne sont pas les mêmes.

Réponse longue: sudo et su - sont des programmes différents qui accomplissent la même tâche, c'est-à-dire qui vous élèvent aux privilèges root.

su était le moyen de facto de devenir root sur les systèmes Linux. Cependant, il était toujours nécessaire de séparer les privilèges et de laisser des informations d'audit derrière. De plus, quand vous faites su - tout ce que vous faites est fait en tant que root et il est dangereux d'avoir autant de puissance. Voici où sudo est venu à la rescousse.

sudo a certaines caractéristiques que su n'a pas. L'élément clé de sudo est sa capacité à exécuter "une" commande en tant que root, puis à abandonner les privilèges à l'utilisateur normal. Exemple: supprimez un fichier appartenant à root.

sudo rm /root/someFile

Cette commande effacera le fichier car sudo vous élèvera à la racine chaque fois que vous utiliserez la commande sudo avant une autre commande. La prochaine commande que vous avez exécutée sera exécutée comme un utilisateur normal (sauf si vous ajoutez la commande sudo au début). Cela vous permet d'accomplir une tâche administrative, puis de supprimer immédiatement les privilèges pour vous aider à éviter les conditions dangereuses.

sudo offre également d'autres avantages comme la restriction de l'ensemble de programmes qu'un utilisateur peut exécuter, les commandes de journaux exécutées sous sudo et d'autres choses. Pour plus d'informations sudo en bref

Quand vous faites su - ou sudo -i, vous faites la même chose. Cela devient root, mais gardez à l'esprit que su et sudo sont complètement différents et vous fournissent différents outils en tant qu'administrateur système. Personnellement, je ne lance JAMAIS su - et ma politique pam l'interdit , ne permettant à personne de l'exécuter. Dans mes systèmes, vous devez toujours utiliser sudo à cause des avantages supplémentaires.

Plus d'informations: Utilisation et activation de sudo

Termiux
la source
supeut également exécuter une seule commande:su -c 'command ...'
Eliah Kagan
La question portait sur la différence entre sudo -iet sudo su -, pas entre sudoet su.
Alessio Gaeta