Come posso impedire agli utenti di accedere a qualsiasi cosa tranne la loro home directory?


22

Come posso impedire agli utenti di accedere a qualsiasi cosa tranne la loro home directory?

Ad esempio, ho una partizione NTFS montata sotto /media/ntfs, quindi se l'utente accede tramite ssh può raggiungere questa partizione. Come posso disabilitare gli utenti per cduscire dalla loro home directory?

Risposte:


22

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 cdaltrove, ma solo all'interno di quella shell. Se l'utente avvia vio 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 /bine /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 /bine /usr/bin. Ma è solo l'inizio. Le applicazioni hanno bisogno di librerie da /usr/libe /lib, che a loro volta necessitano dell'accesso alle risorse di sistema, che sono in /dev, e ai file di configurazione in /etce /usr/share.

Questa era solo la parte di sola lettura. Anche le applicazioni vorranno /tmpe spesso /varscriveranno. 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 /.


2
Questo non ha senso per me, ci potrebbero essere molti motivi per cui si desidera che un utente abbia accesso solo a 1 cartella. Un esempio potrebbe essere quello di consentire l'accesso per trasmettere file da un server a un altro. Penso piuttosto che sia un po 'sciocco che qualsiasi utente possa sfogliare l'intero sistema invece.
Richard,

Nel mio caso sto configurando un utente per consentire ai dispositivi di invertire ssh nella macchina per la gestione remota dei dispositivi. Quindi voglio limitare l'account utente il più possibile nel caso in cui sia compromesso - ho solo bisogno di stabilire la connessione corretta. Non direi che è sciocco, dipende solo da ciò che stai cercando di realizzare.
Giovanni,

7

Avevo bisogno di fornire l'accesso a utenti samsul /var/xyzsolo e contenuto messa in vendita di blocchi di altre cartelle all'interno/var/

Ho usato la seguente sequenza di comandi:

setfacl -R -m user:sam:--- /var/

setfacl -m user:sam:rx /var/

setfacl -R -m user:sam:rwx /var/xyz/

Quindi l'utente può vedere le directory elencate sotto /var/ma non può vedere i contenuti nelle directory secondarie tranne /var/xyz.


2
Benvenuto in askubuntu! Non vedo questo come una risposta alla domanda posta riguardo alle home directory.
Anziano Geek,

3
@ElderGeek L'OP non può usare solo gli stessi comandi, ma per la home directory?
Seth

@Seth Sì, ma sarebbe chiaro per l'utente medio?
Anziano Geek,

3
@Elder Sì, credo che lo farebbe. Non perfetto, ma comunque una risposta
Seth

1

Oltre a limitare l'accesso ad altre directory, in particolare le home directory degli altri utenti, non volevo che un utente ll /homevedesse i nomi degli altri utenti sul sistema.

Per evitare ciò, come root chmod 701 /home. Questo rende la /homedirectory stessa "lettura / scrittura / esecuzione" alla radice ovviamente, ma solo "esegui" per tutti gli altri. /homeè ancora accessibile a cd, ma gli utenti non possono leggerne il contenuto: le cartelle home degli altri utenti e quindi i nomi utente.


Questa, sebbene non strettamente una risposta alla domanda, è ancora molto interessante ... In una situazione in cui si utilizza un server remoto su cui i client possono accedere, questo è fantastico. Possono comunque spostarsi come previsto, mantenendo la privacy dei nomi utente di altri clienti.
Jack_Hu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.