web-dev-qa-db-fra.com

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

Quelle est la différence entre les commandes Sudo -i et Sudo su -?

Sont-ils les mêmes?

18
Howard

Ils peuvent fournir fonctionnellement près 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 maintient 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.

30
Joel K

Réponse au tir: 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. Aussi quand vous faites su - tout ce que vous faites est fait en tant que root et il est dangereux d'avoir autant de puissance. C'est là que 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: supprimer 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 tels que la limitation 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 n'exécute JAMAIS su - et ma la politique pam l'interdit , ne permettant à personne de l'exécuter. Dans mes systèmes, vous devez toujours utiliser Sudo en raison des avantages supplémentaires.

Plus d'informations: tilisation et activation de Sudo

1
Termiux