Migliori autorizzazioni / proprietà per la radice del documento apache


14

Ho bisogno di aiuto per impostare le autorizzazioni o la proprietà corrette della radice del documento apache. Ecco cosa mi serve:

  • diversi siti Web memorizzati in /var/www/html/<site>
  • due utenti dovrebbero aggiornare / gestire i siti Web tramite ssh
  • la proprietà dovrebbe essere diversa dall'utente apache (per sicurezza)

Come posso fare questo? Al momento tutti i file sono scrivibili in tutto il mondo, il che non va bene. Il server esegue CentOS 5.5

Grazie


Per una risposta più dettagliata con altre opzioni per proteggere un docroot, consultare serverfault.com/questions/357108/…
Comandante di Quinn,

Penso che sia meglio archiviare ogni sito Web in una posizione separata (non metterli entrambi su DocumentRoot, utilizzare 2 host virtuali) quindi ogni utente amministratore di sistema possiede solo il proprio sito Web e imposta il proprietario del gruppo di entrambe le directory dei siti Web come gruppo Apache
il contabile

Risposte:


22

Crea un nuovo gruppo

groupadd webadmin

Aggiungi i tuoi utenti al gruppo

usermod -a -G webadmin user1
usermod -a -G webadmin user2

Cambia la proprietà della directory dei siti

chown root:webadmin /var/www/html/

Modifica le autorizzazioni della directory dei siti

chmod 2775 /var/www/html/ -R

Ora chiunque può leggere i file (incluso l'utente apache) ma solo root e webadmin possono modificarne il contenuto.


Sembra bello. Ma cosa succede se un utente crea nuovi file o copia file aggiornati. Tali autorizzazioni vengono applicate automaticamente? O ha bisogno di chown e chmod ogni volta?
Marco,

I file copiati mantengono le autorizzazioni / proprietà. Le autorizzazioni predefinite per i nuovi file sono gestite dal umaskcomando. Maggiori informazioni qui osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Andy,

3
potresti fare in modo che la directory setgid webadmin aiuti con nuovi file
covener

1
^ +1. Il modo rapido sarebbe: >> chmod 2775 -R / var / www / html /
James Broadhead

@James ta, aggiornato
Andy

2

Preferisco montare la partizione con -o acl. Ciò consente di utilizzare il comando setfacl per fornire autorizzazioni a grana fine su file e cartelle, invece di specificare solo autorizzazioni utente-gruppo-altro.

Quindi mettete acl nella vostra linea di partizione in / etc / fstab, o rimontate con mount -o remount, acl / mnt / xy, e quindi date la proprietà della vostra directory web a nessuno: nessuno. Chmod a 770 e utilizzare setfacl per fornire autorizzazioni di scrittura solo alle cartelle che ne hanno bisogno, ad es. concedere a www-data (o all'utente su cui viene eseguito il server Web) le autorizzazioni di scrittura per la cartella di caricamento e assegnare le autorizzazioni di scrittura al proprio utente per l'intera directory.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

Ora nessuno può leggere i tuoi file, a parte il tuo server web e il tuo utente. Puoi scrivere su ogni file nella cartella e il server web può scrivere solo nella cartella di caricamento.

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.