Frage schönes Sudo oder Sudo schön?


Gibt es einen Unterschied zwischen dem Ausführen einer intensiven Aufgabe über Sudo mit den folgenden Befehlen?

  1. schönes sudo [intensives Kommando hier]
  2. sudo nice [intensiver Befehl hier]

BTW das ist für Linux 3.x.


50
2017-09-05 16:31


Ursprung


Um Ihnen beim Testen zu helfen, sehen Sie nice bash -c 'ps -p $$ -o pid,ni,comm', und sudo nice bash -c 'ps -p $$ -o pid,ni,comm', und nice sudo bash -c 'ps -p $$ -o pid,ni,comm'. Alle drei sollten Ihnen den schönen Wert für die Prozess-ID ($$) der erzeugten Shell zeigen. - Zoredache
@Zoredache, während ich denke, dass Ihr Kommentar sehr konstruktiv ist, sollten wir sagen, dass sie alle den gleichen netten Wert haben werden, weil er beim Forking vererbt wird, was die eigentliche Antwort auf die Frage sein sollte. - Florin Asăvoaie
@FlorinAsavoaie Wenn Sie denken, dass dies die Antwort sein sollte, dann zögern Sie nicht, es hinzuzufügen. Ich fügte meinen obigen Kommentar hinzu, um Dinge zu testen, weil ich persönlich nicht hundertprozentig sicher war, was passieren würde, und ich beschloss, einen Befehl zu finden, der den netten Wert mit verschiedenen Aufrufen anzeigen konnte. Ich bin im Lager, das dazu neigt, einen Test zu haben, der zeigt, dass die Dinge so funktionieren, wie sie sollen. - Zoredache
@FlorinAsavoaie hätte ich auch so gedacht, aber sieh dir das an serverfault.com/a/626576/117546. - emory


Antworten:


Es gibt einen Unterschied, einen entscheidenden.

Wenn du möchtest verringern die Priorität des Prozesses, die Reihenfolge spielt keine Rolle. Auf der anderen Seite, wenn Sie wollen erhöhen, ansteigen Sie müssen es setzen sudo Vor nice.

Da Sie den Befehl als normaler Benutzer ausführen (sonst würden Sie sich überhaupt nicht mit sudo befassen), können Sie nur die Priorität Ihres Befehls verringern. Aber wenn du es benutzt sudo Erstens können Sie es erhöhen, wenn Sie möchten.


101
2017-09-05 17:04



Herzlichen Glückwunsch, Sie gewinnen. - Michael Hampton♦
Dies ist ein sehr wichtiger Punkt, aber als Antwort ist es nur vollständig, wenn Sie es erklären Warum die Reihenfolge spielt im Basisfall keine Rolle (wie Michael in seiner Antwort ausführt). - Lightness Races in Orbit


Wenn du läufst nice sudo Dann wird auch die Eingabeaufforderung für Ihr Passwort niced, aber da Sie viel mehr Zeit damit verbringen, es zu tippen, spielt es keine Rolle.

Wie ThoriumBR bemerkt, wenn Sie die Priorität verringern, dann ist die Reihenfolge irrelevant, aber wenn Sie die Priorität erhöhen möchten, dann (da dies als root ausgeführt werden muss) müssen Sie verwenden sudo nice.

Sonst kann ich mir keinen wirklichen Unterschied vorstellen.


15
2017-09-05 16:35





Verwendung der "Prinzip des geringsten Privilegs" Sie sollten nur ein Programm mit root-Rechten ausführen, wenn es sie benötigt, und sie dann wieder löschen, sobald Sie sie nicht mehr benötigen.

Also, es gibt einen Unterschied, wenn es einen Exploit für Nice gibt, könnte ein Angreifer Code mit den gleichen Rechten ausführen wie das nette Programm.

Außerdem setzt Sudo Ihre Umgebung zurück, also versuchen Sie es mit Nebenwirkungen

$ 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 'nette' Befehl, den Sie über sudo ausführen, könnte also tatsächlich eine andere Binärdatei sein.

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

1
2017-09-12 13:04





Späte Antwort:

Wenn Ihr sudo-Zugang auf bestimmte Programme beschränkt ist (foo und barzum Beispiel), dann haben Sie keine Berechtigung zu laufen sudo nice foo, aber wird erlaubt zu laufen nice sudo foo.


1
2018-01-22 13:59