Gibt es einen Unterschied zwischen dem Ausführen einer intensiven Aufgabe über sudo mit den folgenden Befehlen ?:
- nice sudo [intensiver Befehl hier]
- sudo nice [intensiver Befehl hier]
Übrigens ist dies für Linux 3.x.
Gibt es einen Unterschied zwischen dem Ausführen einer intensiven Aufgabe über sudo mit den folgenden Befehlen ?:
Übrigens ist dies für Linux 3.x.
Antworten:
Es gibt einen entscheidenden Unterschied.
Wenn Sie die Priorität des Prozesses verringern möchten , spielt die Reihenfolge keine Rolle. Auf der anderen Seite, wenn Sie es erhöhen möchten , müssen Sie sudo
vor setzen nice
.
Da Sie den Befehl als normaler Benutzer ausführen (andernfalls würden Sie sich überhaupt nicht um sudo kümmern), können Sie die Priorität Ihres Befehls nur verringern. Aber wenn Sie sudo
zuerst verwenden, können Sie es erhöhen, wenn Sie möchten.
Wenn Sie ausführen, nice sudo
wird die Aufforderung zur Eingabe Ihres Kennworts ebenfalls beeinträchtigt, aber da Sie viel mehr Zeit damit verbringen, es einzugeben, spielt es wirklich keine Rolle.
Wie ThoriumBR feststellte, ist die Reihenfolge irrelevant, wenn Sie die Priorität verringern, aber wenn Sie die Priorität erhöhen möchten, müssen Sie (da dies als root erfolgen muss) verwenden sudo nice
.
Ansonsten kann ich mir keinen wirklichen Unterschied vorstellen.
Wenn Sie das Prinzip der geringsten Rechte verwenden, sollten Sie ein Programm mit Root-Rechten nur dann ausführen, wenn es diese benötigt, und sie dann wieder löschen, sobald Sie sie nicht mehr benötigen.
Also ja, es gibt einen Unterschied, wenn es einen Exploit für nice gibt, könnte ein Angreifer Code mit den gleichen Berechtigungen wie das nice-Programm ausführen.
Außerdem setzt sudo Ihre Umgebung zurück, sodass es möglicherweise zu Nebenwirkungen kommt. Versuchen Sie es
$ 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
Der 'nice'-Befehl, den Sie über sudo ausführen, ist möglicherweise eine andere Binärdatei.
$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens:
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)
Späte Antwort:
Wenn Ihr sudo-Zugriff auf bestimmte Programme ( foo
und bar
z. B.) beschränkt ist, haben Sie keine Berechtigung zum Ausführen sudo nice foo
, können diese jedoch ausführen nice sudo foo
.
nice bash -c 'ps -p $$ -o pid,ni,comm'
, undsudo nice bash -c 'ps -p $$ -o pid,ni,comm'
, undnice sudo bash -c 'ps -p $$ -o pid,ni,comm'
. Alle drei sollten Ihnen den netten Wert für die Prozess-ID ($$) der erzeugten Shell anzeigen.