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

  1. I cd nella /home e chmod 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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top