c'è qualche differenza tra l'esecuzione di un'attività intensiva su sudo con i seguenti comandi ?:
- nice sudo [comando intensivo qui]
- sudo nice [comando intensivo qui]
A proposito questo è per Linux 3.x.
c'è qualche differenza tra l'esecuzione di un'attività intensiva su sudo con i seguenti comandi ?:
A proposito questo è per Linux 3.x.
Risposte:
C'è una differenza, cruciale.
Se si desidera ridurre la priorità del processo, l'ordine non ha importanza. D'altra parte, se vuoi aumentarlo , devi metterlo sudo
prima nice
.
Dato che stai eseguendo il comando come un normale utente (altrimenti non ti preoccuperesti affatto di sudo), puoi solo ridurre la priorità del tuo comando. Ma se lo usi per sudo
primo, puoi aumentarlo se vuoi.
Se esegui, nice sudo
verrà richiesta anche la richiesta della tua password, ma dal momento che trascorri molto più tempo a scriverla, in realtà non importa molto.
Come notato da ThoriumBR, se stai abbassando la priorità, l'ordine è irrilevante, ma se vuoi aumentare la priorità, allora (poiché questo deve essere fatto come root) devi usare sudo nice
.
Altrimenti non riesco a immaginare alcuna differenza reale.
Usando il 'principio del privilegio minimo' dovresti eseguire un programma con privilegi di root solo se ne ha bisogno, e poi rilasciarli di nuovo non appena non ne hai più bisogno.
Quindi sì, c'è una differenza, se esiste un exploit per nice, un utente malintenzionato può eseguire il codice con gli stessi privilegi del programma nice.
Inoltre, sudo ripristina il tuo ambiente, quindi potrebbe avere effetti collaterali, prova
$ 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
Quindi il comando 'bello' che esegui su sudo potrebbe effettivamente finire per essere un binario diverso.
$ which ash
~/.local/bin/ash
$ sudo which ash
[sudo] password for jens:
which: no ash in (/sbin:/bin:/usr/sbin:/usr/bin)
Risposta in ritardo:
Se l'accesso sudo è limitato a determinati programmi ( foo
e bar
, ad esempio), non avrai l'autorizzazione per eseguire sudo nice foo
, ma ti sarà permesso di eseguire nice sudo foo
.
nice bash -c 'ps -p $$ -o pid,ni,comm'
, esudo nice bash -c 'ps -p $$ -o pid,ni,comm'
, enice sudo bash -c 'ps -p $$ -o pid,ni,comm'
. Tutti e tre dovrebbero mostrare il buon valore per l'id di processo ($$) della shell generata.