sudo
è sicuro o insicuro quanto le sue popolari alternative come su
.
L'alternativa più popolare sudo
significa consentire ad alcuni o tutti gli utenti di elevare i propri privilegi con su
. Più comunemente, tutti gli utenti possono farlo, purché conoscano la password dell'utente di destinazione . A differenza di sudo
, che è quasi sempre impostato per richiedere la password di un utente (ed è limitato solo agli utenti fidati), su
richiede la password dell'utente di destinazione .
Alcune persone presumono che questo renda su
più sicuro di sudo
, ma non è così. su
è soggetto agli stessi tipi di attacchi di sudo
. Supponi di essere un utente che a volte esegue su
per diventare root. Supponiamo inoltre che un utente malintenzionato che non conosce la password di root e non può ancora eseguire azioni poiché l'utente root riesce comunque a eseguire codice arbitrario come account non root. Proprio come questo aggressore può fare in modo che quando esegui sudo
tu esegua il suo comando dannoso, così può farlo in modo che quando esegui su
tu " sta eseguendo il loro comando dannoso.
Cioè, la tecnica nella risposta di reed funziona altrettanto bene per introdurre un falso comando su
che cattura la password di l'utente target (che, quando su
viene utilizzato per amministrare il sistema, di solito è root).
Ma è possibile fare meglio di entrambi, o per mitigare il rischio.
Una volta che qualcuno può eseguire qualsiasi comando come te, di solito può apportare modifiche arbitrarie al modo in cui si comporta la tua shell e quindi creare falsi sudo
, su
, doas
o qualsiasi altro comando di elevazione dei privilegi.
Tuttavia, fintanto che puoi evitare di interagire con una falsa schermata di accesso , puoi mitigare questo problema disponendo di account utente amministrativi e non amministrativi separati. Non sembra un'idea nuova, e ovviamente non lo è, ma è sorprendente quanto raramente venga veramente eseguita.
Il tuo account amministrativo potrebbe essere solo l'account di root. Ma se vuoi i vantaggi di non accedere come root, che includono il log (per capire cosa è andato storto in caso di errori non dannosi) e la possibilità di eseguire programmi che non sono pensati per essere eseguiti come root (la maggior parte interfacce grafiche), quindi puoi avere due account non root, uno dei quali viene utilizzato per l'amministrazione (in cui esegui sudo
o su
secondo necessità) e l'altro di cui non lo è.
Questo account, se non , dovrebbe condividere le credenziali di accesso con l'account non amministrativo. Non dovrebbero avere password identiche o simili e dovrebbero avere coppie di chiavi separate. Inoltre, non devi elevare dall'account non amministrativo all'account amministrativo, per lo stesso motivo non devi elevare dall'account non amministrativo a root.
Se lo fai, c'è anche un argomento per sudo
rispetto alle sue alternative.
In questa configurazione, è un vantaggio di sudo
rispetto a su
, sebbene non sia un vantaggio decisivo. Puoi evitare di utilizzare accidentalmente l'account sbagliato, quello utilizzato per ogni sorta di altra roba non amministrativa che potrebbe esporlo a rischi maggiori, per amministrare il sistema, facendo in modo che sia solo un normale account utente limitato che non è elencato e non è un membro di alcun gruppo elencato nel file / etc / sudoers
.
Ma puoi anche raggiungere questo obiettivo con su
esercitando un'adeguata autodisciplina e assicurandoti di non essere mai su
dall'account che hai progettato come non amministrativo o impedendo agli account designati come non amministrativi di elevare i privilegi con su
. (Un modo per ottenerlo, su un sistema GNU / Linux, è con AppArmor, che è il modo in cui Ubuntu ha impedito all'account guest di utilizzare con successo su
- nelle versioni di Ubuntu che venivano fornite con account guest abilitati.)
Il rischio di utilizzare sudo
o su
nel solito modo potrebbe essere accettabile per te.
Detto questo, non sto dicendo che devi necessariamente farlo. Dipende da te o, se del caso, da te e da altri stakeholder.
Per molte persone, i rischi associati all'utilizzo dello stesso account per (a) elevare al root con sudo
(o meccanismi simili come Polkit) o su
(o meccanismi simili come doas
) usati per (b) attività non amministrative come l'esecuzione di un browser web possono essere un compromesso accettabile per comodità.