Uno dei modi più semplici/efficienti per controllare ciò che un utente può fare è lshell.
lshell è una shell codificata in Python, che consente di limitare l'ambiente di un utente a set limitati di comandi, scegliere di abilitare/disabilitare qualsiasi comando su SSH (ad es. SCP, SFTP, rsync, ecc.), registrare i comandi dell'utente, implementare la limitazione temporale, e altro ancora.
Se dai a qualcuno un account shell, può vedere tutti i file leggibili da tutti. Questo include molti file in /etc
necessari per il funzionamento del sistema, incluso /etc/passwd
(che contiene nomi utente ma non password).
Se consenti all'utente di accedere solo all'interno di un chroot, non potrà vedere i file all'esterno del chroot. Ciò significa che devi inserire un numero sufficiente di programmi, librerie, ecc. all'interno del chroot:tutto ciò a cui l'utente deve avere accesso e anche ogni dipendenza di questi.
Si noti che un chroot protegge solo l'accesso diretto ai file. L'utente può curiosare su varie cose, inclusi i nomi e gli argomenti dei processi in esecuzione di tutti gli utenti (a meno che non si impostino protezioni aggiuntive come SELinux). Se l'utente non avrà bisogno di fare molto, puoi impostare restrizioni più rigide (incluso impedire all'utente di creare i propri eseguibili) con una shell limitata, ma impostare correttamente una shell limitata è molto complicato, quindi non lo faccio Non lo consiglio.
Al giorno d'oggi, le macchine virtuali sono molto economiche. Hai molte implementazioni gratuite tra cui scegliere (Modalità utente Linux, VirtualBox, VMware, KVM, OpenVZ, VServer, ...) e lo spazio su disco utilizzato da un'installazione di sistema aggiuntiva è minimo (e potresti comunque averne bisogno per chroot). Una macchina virtuale isola praticamente tutto:file, processi, rete, ... A meno che tu non abbia vincoli molto insoliti, questa è la strada da percorrere.
Un'opzione è metterli in una sessione di shell ristretta, come rbash [bash -r].
Non è chiaro a questo punto cosa, esattamente, desideri realizzare, tuttavia, in superficie posix acl per 'altro' si applicherà al nuovo account così come a qualsiasi gruppo acl per i gruppi a cui appartiene l'account, come 'utenti' per esempio.