Access Control Lists in Debian Lenny
-
12-09-2019 - |
Domanda
Quindi, per i miei clienti a chi sono i siti ospitati sul mio server, creo account utente, con le cartelle standard di casa all'interno di / home.
I ha installato una prigione SSH per tutti gli utenti collective
, perché sono davvero contro l'uso di un server FTP separato. Poi, ho installato ACL e ACL aggiunto al mio /etc/fstab
-. Tutto bene
- I cd nella
/home
echmod 700 ./*
.- A questo punto gli utenti non possono vedere in altre directory utenti domestici (yay), ma apache non possono vedere loro o (boo)
- . Ho corso
setfacl u:www-data:rx ./*
. Ho provato anche singole directory. - Ora apache può vedere i siti di nuovo, ma così può da tutti gli utenti. ACL ha cambiato le autorizzazioni delle cartelle home per
750
.
Come faccio ACL di impostazione di modo che Apache può vedere i siti ospitati nella home directory dell'utente e 2. Gli utenti non può vedere fuori della loro casa e in file degli altri.
Soluzione
Da quando ho Cross-postato la questione (non sapevo su ServerFault fino a dopo ho chiesto), io cross-post la risposta, dal momento che io personalmente trovo la questione in modo appropriato per entrambe le comunità.
di hayalci (ServerFault) commento che
chmod e setfacl non funzionano troppo bene insieme.
aiutato un buon affare. Invece di usare chmod per impedire ad altri gruppi di accedere ai dati, che ho usato:
cd /home
setfacl -m g::0 joeuser # Removes permissions for the owning group.
setfacl -m g:www-data:r joeuser # Adds read permissions for Apache
cd joeuser/joeuser.com/static/
setfacl -m g:www-data:rwx uploads # So apache can write to the uploads directory.
Altri suggerimenti
Un trucco che ho usato su scatole condivisi è quello di:
-
ricorsivamente impostare il contenuto delle directory home di non consentire l'accesso alle "altre" utenti
chmod -R o-rwx /home/*
-
Imposta tutte le directory home autorizzazioni dell'utente di primo livello per essere eseguibile da "altri" utenti
chmod o+x /home/*
-
cambiare public_html gruppo di directory di ciascun utente in www-data (o il vostro gruppo apache)
chgrp www-data / home / * / public_html
-
modificare tutte le directory sotto / home / * / public_html da setgid
find / home / utente / public_html tipo d exec chmod 2750 {} \;
Non aggiungere uno dei dell'Utente al www-data (o gruppo apache). Anche se non sono membri, il trucco setgid sarà ancora fare i file leggibili da apache. Non è Fullproof (spostamento di file non cambia sempre proprietario del gruppo e, talvolta, le altre autorizzazioni utente sono lasciati se presenti prima di una mossa) ma funziona sulla mia macchina. Spero che questo aiuti un po '! Forse qualcun altro avrà una soluzione migliore.
Il mio tipico modo di farlo, partendo dal presupposto che tutti gli utenti sono nel gruppo "utenti":
chmod 701 /home/*
chgrp users /home/*
Opzionalmente fare lo stesso su / casa stessa per impedire agli utenti di vedere una lista di directory home. Tuttavia, possono tirare quasi la stessa lista da / etc / passwd o getent passwd
Ora tutti nel gruppo di utenti verrà negato l'accesso a tutte le directory home (tranne la propria). Non soci di utenti (ad esempio Apache e altri servizi) saranno ancora in grado di cd nelle directory home, ma non saranno in grado di fare ls.
chmod 755 /home/*/public_html
<- Sostituire con qualsiasi percorso www si utilizza
Ora Apache e altri servizi saranno liberi di cd / home / pippo / public_html per elencare i file e quant'altro ha bisogno un server web.