czy jest jakaś różnica między uruchomieniem intensywnego zadania nad sudo za pomocą następujących poleceń ?:
- ładne sudo [intensywne polecenie tutaj]
- sudo nice [intensywne polecenie tutaj]
BTW to jest dla Linuksa 3.x.
czy jest jakaś różnica między uruchomieniem intensywnego zadania nad sudo za pomocą następujących poleceń ?:
BTW to jest dla Linuksa 3.x.
Odpowiedzi:
Jest różnica, kluczowa.
Jeśli chcesz zmniejszyć priorytet procesu, kolejność nie ma znaczenia. Z drugiej strony, jeśli chcesz go zwiększyć , musisz sudo
wcześniej nice
.
Ponieważ uruchamiasz tę komendę jako zwykły użytkownik (w przeciwnym razie sudo w ogóle nie zawracałby sobie głowy), możesz jedynie zmniejszyć priorytet swojej komendy. Ale jeśli użyjesz sudo
pierwszego, możesz go zwiększyć, jeśli chcesz.
Jeśli uruchomisz, nice sudo
monit o podanie hasła również zostanie poprawiony, ale ponieważ poświęcisz znacznie więcej czasu na jego wpisywanie, to naprawdę nie ma większego znaczenia.
Jak zauważył ThoriumBR, jeśli obniżasz priorytet, kolejność jest nieistotna, ale jeśli chcesz podnieść priorytet, musisz (ponieważ należy to zrobić jako root), musisz użyć sudo nice
.
W przeciwnym razie nie wyobrażam sobie żadnej prawdziwej różnicy.
Korzystając z „zasady najmniejszych uprawnień” , powinieneś uruchamiać program z uprawnieniami roota tylko wtedy, gdy ich potrzebuje, a następnie upuść je ponownie, gdy tylko ich nie będziesz już potrzebować.
Tak, istnieje różnica, jeśli istnieje exploit dla Nicei, atakujący mógłby uruchomić kod z tymi samymi uprawnieniami, co miły program.
Ponadto sudo resetuje środowisko, więc może to powodować skutki uboczne, spróbuj
$ 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
Zatem polecenie „ładne” uruchamiane przez sudo może w rzeczywistości być innym plikiem binarnym.
$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens:
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)
Spóźniona odpowiedź:
Jeśli twój dostęp do sudo jest ograniczony do niektórych programów ( foo
i bar
na przykład), nie będziesz mieć uprawnień do uruchamiania sudo nice foo
, ale będziesz mógł uruchomić nice sudo foo
.
nice bash -c 'ps -p $$ -o pid,ni,comm'
, isudo nice bash -c 'ps -p $$ -o pid,ni,comm'
, inice sudo bash -c 'ps -p $$ -o pid,ni,comm'
. Wszystkie trzy powinny pokazać ci dobrą wartość dla id procesu ($$) spawnowanej powłoki.