y a-t-il une différence entre exécuter une tâche intensive sur sudo avec les commandes suivantes?
- beau sudo [commande intensive ici]
- sudo nice [commande intensive ici]
BTW c'est pour Linux 3.x.
y a-t-il une différence entre exécuter une tâche intensive sur sudo avec les commandes suivantes?
BTW c'est pour Linux 3.x.
Réponses:
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 sudo
avant 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 sudo
premier, vous pouvez l'augmenter si vous le souhaitez.
Si vous exécutez, nice sudo
l'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.
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)
Réponse tardive:
Si votre accès sudo est limité à certains programmes ( foo
et bar
, par exemple), vous ne serez pas autorisé à l'exécuter sudo nice foo
, mais vous serez autorisé à l'exécuter nice sudo foo
.
nice bash -c 'ps -p $$ -o pid,ni,comm'
, etsudo nice bash -c 'ps -p $$ -o pid,ni,comm'
, etnice 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é.