Rivalutare prima le proprie esigenze. Qual è il problema che stai cercando di risolvere? Perché vuoi impedire agli utenti di lasciare la loro home directory? Non è piuttosto che non vuoi che rovistino attraverso altre directory specifiche , come le home directory degli altri utenti?
È molto difficile impedire agli utenti di uscire dalla propria directory home. In realtà è anche un po 'sciocco (la spiegazione segue). È molto più semplice impedire agli utenti di accedere alle directory in cui non si desidera che accedano.
Prima di tutto, sì, puoi dare agli utenti una cosiddetta shell con restrizioni , vedi man rbash
. Questo impedirà loro di essere cd
altrove, ma solo all'interno di quella shell. Se l'utente avvia vi
o nano
(o qualsiasi altro programma in grado di aprire un file) può aprire nuovamente i file in qualsiasi punto del sistema. È un dato di fatto, una shell ristretta non impedisce ad es cat /etc/passwd
.
Il prossimo passo è una prigione di root. Maggiori informazioni sul wiki della community e in questa domanda . Anche se una jail root bloccherà gli utenti all'interno di un giardino recintato, all'interno del quale non hanno accesso a nient'altro che ai file e ai comandi che hai messo intenzionalmente lì, le jail root sono davvero destinate all'isolamento del software non affidabile piuttosto che degli utenti. In particolare, sono per software che deve essere eseguito con privilegi elevati, quindi un jail root .
Gli utenti, d'altra parte, sono fidati : hanno dovuto autenticarsi ed eseguire senza privilegi elevati. Pertanto, i permessi sui file sono sufficienti per impedire loro di modificare i file che non possiedono e di vedere cose che non devono vedere. Per impedire agli utenti di leggere il contenuto di un file, rimuovere la sua leggibilità mondiale con chmod o-r FILE
. Per tenere gli utenti fuori da una directory, renderli inaccessibili al mondo chmod o-rwx DIR
.
La leggibilità mondiale è l'impostazione predefinita, per una buona ragione: gli utenti hanno effettivamente bisogno della maggior parte delle cose che si trovano nel file system. Non bloccare gli utenti nelle loro case solo perché esistono segreti all'esterno.
Perché bloccare gli utenti nella loro home directory è un po 'sciocco
Per fare qualcosa di utile, gli utenti hanno bisogno di accedere a comandi e applicazioni. Questi sono in directory come /bin
e /usr/bin
, quindi a meno che non copiate tutti i comandi di cui hanno bisogno da lì nelle loro home directory, gli utenti avranno bisogno di accedere a /bin
e /usr/bin
. Ma è solo l'inizio. Le applicazioni hanno bisogno di librerie da /usr/lib
e /lib
, che a loro volta necessitano dell'accesso alle risorse di sistema, che sono in /dev
, e ai file di configurazione in /etc
e /usr/share
.
Questa era solo la parte di sola lettura. Anche le applicazioni vorranno /tmp
e spesso /var
scriveranno. Quindi, se vuoi vincolare un utente nella sua home directory, dovrai copiarlo molto. In effetti, praticamente un intero file system di base - che hai già, situato in /
.