beau sudo ou sudo sympa?

53

y a-t-il une différence entre exécuter une tâche intensive sur sudo avec les commandes suivantes?

  1. beau sudo [commande intensive ici]
  2. sudo nice [commande intensive ici]

BTW c'est pour Linux 3.x.

Nicolas Laplante
la source
6
Pour vous aider à tester voir nice bash -c 'ps -p $$ -o pid,ni,comm', et sudo nice bash -c 'ps -p $$ -o pid,ni,comm', et nice sudo bash -c 'ps -p $$ -o pid,ni,comm'. Tous les trois devraient vous montrer la valeur intéressante de l'ID de processus ($$) du shell engendré.
Zoredache
@Zoredache, même si je pense que votre commentaire est TRÈS constructif, nous devrions dire qu'ils auront tous la même valeur car ils sont hérités lors de la contrefaçon, ce qui devrait être la réponse réelle à la question.
Florin Asăvoaie
3
@ FlorinAsavoaie si vous pensez que cela devrait être la solution, n'hésitez pas à l'ajouter. J'ai ajouté le commentaire ci-dessus comme moyen de tester les choses, car personnellement, je n'étais pas totalement sûr de ce qui allait se passer, et j'ai décidé de trouver une commande pouvant afficher la valeur intéressante de différentes invocations. Je suis dans le camp qui a tendance à préférer avoir un test qui montre que les choses fonctionnent comme elles sont supposées.
Zoredache
@ FlorinAsavoaie Je l'aurais pensé aussi, mais regardez serverfault.com/a/626576/117546 .
emory

Réponses:

104

Il y a une différence, une cruciale.

Si vous souhaitez diminuer la priorité du processus, l'ordre n'a pas d'importance. Par contre, si vous voulez l' augmenter , vous devez le mettre sudoavant nice.

Puisque vous exécutez la commande en tant qu'utilisateur normal (sinon, vous ne vous occuperiez pas du tout de sudo), vous ne pouvez que réduire la priorité de votre commande. Mais si vous utilisez en sudopremier, vous pouvez l'augmenter si vous le souhaitez.

ThoriumBR
la source
21
Félicitations, vous gagnez.
Michael Hampton
2
C'est un point très important, bien que la réponse ne soit complète que lorsque vous expliquez pourquoi l'ordre n'a pas d'importance dans le scénario de base (comme Michael le fait dans sa réponse).
Courses de légèreté avec Monica
16

Si vous exécutez, nice sudol'invite pour votre mot de passe sera également utile, mais comme vous passerez beaucoup plus de temps à le saisir, cela n'a pas beaucoup d'importance.

Comme ThoriumBR l'a noté, si vous réduisez la priorité, l'ordre est sans importance, mais si vous souhaitez augmenter la priorité, vous devez utiliser (puisque cela doit être effectué en tant que root) sudo nice.

Sinon, je ne peux pas imaginer de réelle différence.

Michael Hampton
la source
2

En utilisant le "principe de moindre privilège", vous ne devriez exécuter un programme avec les privilèges root que s'il en avait besoin, puis les supprimer à nouveau dès que vous n'en avez plus besoin.

Alors oui, il y a une différence: s'il y a un exploit pour nice, un attaquant pourrait exécuter du code avec les mêmes privilèges que le programme nice.

En outre, sudo réinitialise votre environnement afin d’éviter les effets secondaires, essayez

$ echo 'echo $PATH' | sh
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/home/jens/.local/bin:/home/jens/bin:/home/jens/.local/bin
$ echo 'echo $PATH' | sudo sh
[sudo] password for jens: 
/sbin:/bin:/usr/sbin:/usr/bin

Ainsi, la commande "sympa" que vous exécutez via sudo pourrait en réalité être un autre binaire.

$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens: 
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)
Jens Timmerman
la source
2

Réponse tardive:

Si votre accès sudo est limité à certains programmes ( fooet bar, par exemple), vous ne serez pas autorisé à l'exécuter sudo nice foo, mais vous serez autorisé à l'exécuter nice sudo foo.

Chris Dennis
la source