Chiedere questo perché apparentemente ci sono più persone che sinceramente non si rendono conto solo quanto sia pessima questa idea, e voglio che ci sia un posto unico, facile da trovare, da inviare / inviare.
Prima di tutto, bash, fondamentalmente, è scritto per facilitare agli utenti quello che vogliono fare. È stato scritto per rendere facile fare qualsiasi cosa tu voglia fare un gran numero di modi diversi, e di conseguenza è possibile fare la maggior parte delle cose in un gran numero di modi diversi. Non è stato scritto con i controlli di accesso in mente e, di conseguenza, manca di controlli di accesso. Di conseguenza, l'aggiunta di controlli di accesso su di esso e l'impossibilità di svolgere determinati compiti al suo interno, è un po 'come provare a utilizzare un bulldozer per ricamo; forse non impossibile, ma molto, molto difficile.
Quindi, ad esempio, qualsiasi comando eseguito da .bashrc
può essere interrotto, in background o ucciso se l'utente (o più probabilmente uno script che l'utente ha scritto) è abbastanza veloce (inviando ^C
o ^Z
). Sulla riga di comando, gli utenti possono annullare le variabili, aprire le subshell, possono specificare percorsi diretti per i file eseguibili (molti dei quali sono in posizioni prevedibili) e possono persino inviare cose attraverso la rete anche se non si dispone di alcuna rete -accessibilità delle applicazioni a loro accessibili, perché possono aprire flussi tcp direttamente da bash .
Ora, questo è un problema noto, ed è il motivo per cui rbash è stato sviluppato. Ma anche rbash
non è una soluzione chiavi in mano , e alla fine della giornata è anche abbastanza lassista:
These restrictions are enforced after any startup files are read.
When a command that is found to be a shell script is executed (see Shell Scripts), rbash >turns off any restrictions in the shell spawned to execute the script.
E poi, naturalmente, c'è il fatto che devi assicurarti costantemente che la tua versione di bash sia aggiornata , e che il tuo kernel è aggiornato e che stai utilizzando un approccio di whitelisting esplicito e esaminando attentamente ciascuna applicazione permettere. È un compito piuttosto erculeo e la maggior parte delle volte c'è un modo migliore / più semplice per realizzare ciò che si vuole ottenere.
Se hai in mente una particolare impostazione di sicurezza e stavi considerando l'utilizzo di .bashrc
, allora:
Leggi altre domande sui tag bash access-control user-management