bello sudo o sudo bello?


53

c'è qualche differenza tra l'esecuzione di un'attività intensiva su sudo con i seguenti comandi ?:

  1. nice sudo [comando intensivo qui]
  2. sudo nice [comando intensivo qui]

A proposito questo è per Linux 3.x.


6
Per aiutarti a provare vedi nice bash -c 'ps -p $$ -o pid,ni,comm', e sudo nice bash -c 'ps -p $$ -o pid,ni,comm', e nice 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.
Zoredache,

@Zoredache, anche se penso che il tuo commento sia MOLTO costruttivo, dovremmo dire che avranno tutti lo stesso valore perché viene ereditato durante il fork, che dovrebbe essere la risposta effettiva alla domanda.
Florin Asăvoaie,

3
@FlorinAsavoaie se pensi che dovrebbe essere la risposta, non esitare ad aggiungerlo. Ho aggiunto il mio commento sopra come un modo per testare le cose, perché personalmente non ero sicuro al 100% di ciò che sarebbe successo, e ho deciso di trovare un comando che potesse mostrare il buon valore con varie invocazioni. Sono nel campo che tende a preferire di fatto un test che mostra che le cose stanno funzionando come dovrebbero.
Zoredache,

@FlorinAsavoaie Lo avrei pensato anch'io, ma guarda serverfault.com/a/626576/117546 .
emory

Risposte:


104

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 sudoprima 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 sudoprimo, puoi aumentarlo se vuoi.


21
Congratulazioni, hai vinto.
Michael Hampton

2
Questo è un punto molto importante, sebbene come risposta sia completo solo quando spieghi perché l'ordine non ha importanza nel caso base (come fa Michael nella sua risposta).
Lightness Races with Monica

16

Se esegui, nice sudoverrà 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.


2

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)

2

Risposta in ritardo:

Se l'accesso sudo è limitato a determinati programmi ( fooe bar, ad esempio), non avrai l'autorizzazione per eseguire sudo nice foo, ma ti sarà permesso di eseguire nice sudo foo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.