Řešení 1:
Je v tom rozdíl, zásadní.
Pokud chcete snížit prioritu procesu, na pořadí nezáleží. Na druhou stranu, pokud chcete zvýšit musíte zadat sudo
před nice
.
Vzhledem k tomu, že příkaz spouštíte jako běžný uživatel (jinak byste se sudo vůbec neobtěžovali), můžete pouze snížit prioritu svého příkazu. Ale pokud použijete sudo
za prvé, můžete jej zvýšit, pokud chcete.
Řešení 2:
Pokud spustíte nice sudo
pak bude výzva k zadání hesla také pěkná, ale protože strávíte mnohem více času jeho psaním, na tom opravdu moc nezáleží.
Jak poznamenal ThoriumBR, pokud snižujete prioritu, pořadí je irelevantní, ale pokud chcete zvýšit prioritu, pak (protože to musí být provedeno jako root) musíte použít sudo nice
.
Jinak si nedovedu představit žádný skutečný rozdíl.
Řešení 3:
Pomocí 'principu nejmenších oprávnění' byste měli spouštět program s oprávněními root pouze v případě, že je potřebuje, a poté je znovu zahodit, jakmile je již nebudete potřebovat.
Takže ano, je tu rozdíl, pokud existuje exploit pro nice, útočník by mohl spustit kód se stejnými oprávněními jako program nice.
Sudo také resetuje vaše prostředí, takže může mít vedlejší účinky, zkuste
$ 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
Takže příkaz 'hezký', který spustíte přes sudo, může ve skutečnosti skončit jako jiný binární soubor.
$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens:
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)
Řešení 4:
Pozdní odpověď:
Pokud je váš přístup k sudo omezen na určité programy (foo
a bar
), pak nebudete mít oprávnění ke spuštění sudo nice foo
, ale bude moci spustit nice sudo foo
.