Vogliamo che alcuni utenti siano in grado di fare ad esempio sudo
e diventare root,
Bene, questo è il problema che sudo è progettato per risolvere, quindi quella parte è abbastanza semplice.
ma con la limitazione che l'utente non può cambiare la password di root.
Come SHW ha sottolineato in un commento, è possibile configurare sudo in modo che determinate azioni possano essere eseguite come root da determinati utenti. Cioè, si può permettere di fare user1 sudo services apache2 restart
, user2 permettere di fare sudo reboot
ma nient'altro, pur consentendo il sistema amministratore assunto-as- user3
a fare sudo -i
. Ci sono howtos disponibili su come impostare sudo in questo modo, oppure puoi cercare (o chiedere) qui. Questo è un problema risolvibile.
Tuttavia, un utente a cui è stata concessa la capacità sudo -i
o sudo
all'interno di una shell ( sudo bash
ad esempio) può fare qualsiasi cosa. Questo perché al momento in cui sudo avvia la shell, sudo stesso non è più visibile. Fornisce il contesto di sicurezza di un altro utente (molto spesso root), ma non ha voce in capitolo su ciò che fa l'applicazione eseguita. Se a sua volta l'applicazione viene avviata, passwd root
sudo non può farci nulla. Nota che questo può essere fatto anche attraverso altre applicazioni; per esempio, molti degli editor più avanzati forniscono funzionalità per eseguire un comando attraverso la shell, una shell che verrà eseguita con l'uid efficace di quel processo di editor (ovvero root).
Cioè, una garanzia che possiamo ancora accedere a quel server e diventare root indipendentemente da ciò che faranno gli altri utenti.
Scusate; se intendi davvero "assicurati che saremo in grado di accedere e utilizzare il sistema indipendentemente da ciò che qualcuno con accesso root vi farà", ciò (a tutti gli effetti) non può essere fatto. Un veloce "sudo rm / etc / passwd" o "sudo chmod -x / bin / bash" (o qualunque cosa usi la radice della shell) e tu sei praticamente tolto comunque. "Praticamente hosed" significa "dovrai ripristinare dal backup e sperare che non abbiano fatto nulla di peggio di uno scivolo di dita". Puoi prendere alcune misure per ridurre il rischio di un incidente accidentale che porta a un sistema inutilizzabile, ma non puoi impedire alla malizia di causare problemi molto gravi fino al punto di necessità di ricostruire il sistema da zero o per lo meno da noto buoni backup.
Dando a un utente l'accesso root illimitato su un sistema, ti fidi di quell'utente (incluso qualsiasi software che potrebbe scegliere di eseguire, anche qualcosa di banale come il suo) di non avere intenzioni malevole e di non sbagliare per caso. Questa è la natura dell'accesso root.
L' accesso limitato alla radice, ad esempio sudo, è un po 'meglio, ma bisogna comunque fare attenzione a non aprire alcun vettore di attacco. E con l'accesso root, ci sono molti possibili vettori di attacco per attacchi di escalation di privilegi.
Se non puoi fidarti di loro con il livello di accesso che comporta essere root, avrai bisogno di una configurazione sudo molto ristretta, o semplicemente di non concedere all'utente in questione l'accesso root in alcun modo, sudo o altro.
sudo
per concedere l'autorizzazione solo per applicazioni con privilegi di root specifici. In questo modo, l'utente non sarà autorizzato a modificare la password di root