GNU/Linux >> Linux Esercitazione >  >> Linux

Con quale utente devono essere eseguiti apache e PHP? Quali autorizzazioni devono avere i file /var/www?

  1. non root
  2. non root
  3. SuEXEC
  4. Dipende. 644 per i file e 755 per le cartelle sono valori predefiniti sicuri.

Non cambiare la proprietà di nulla in www-data a meno che tu non voglia che php sia in grado di modificare il contenuto di quel file/cartella

Indipendentemente da qualsiasi altra cosa tu faccia:le cartelle necessitano di permessi di lettura ed esecuzione affinché l'utente possa trovare i file; i file richiedono autorizzazioni di lettura affinché l'utente possa leggerli. Se ricevi errori di autorizzazione quando modifichi le cose, sei riuscito a rimuovere queste autorizzazioni fondamentali.

Se non stai scrivendo alcun file tramite la tua applicazione php, puoi lasciare i file di tua proprietà:tu. In questa circostanza si applica il permesso mondiale (xx4/5).

Se lasci i file come di tua proprietà:tu con permessi file di 644 (file) ciò significherebbe che solo puoi modificare i file del sito web - www-data non sei tu - quindi non può modificare i file.

Se vuoi limitare l'accesso ad apache + te e bloccare tutti gli altri accessi chown -R you:www-data * . Con i permessi dei file di 640 e i permessi delle cartelle di 750 puoi modificare, www-data può leggere - perché poi apache legge il permesso di gruppo (x4/5x).

Limita al minimo i percorsi in cui consenti ad apache/php di scrivere - se c'è una directory tmp in cui l'applicazione deve scrivere - consenti all'applicazione di scrivere solo in quella cartella - e per qualsiasi posizione scrivibile, se possibile, assicurati che sia all'esterno la radice del documento o adottare misure per garantire che questo percorso scrivibile non sia accessibile dal Web.

Nota che "tu" non dovrebbe non essere radice. Consentire l'accesso diretto a ssh come root è un indicatore di altre falle nella sicurezza (come not non consentire l'accesso tramite password), ma questo è un intero gruppo di domande a sé stante.


Quindi, se ho capito bene le cose, se apache è in esecuzione come www-data e voglio che apache sia in grado di leggere una directory, il bit x deve essere impostato per il gruppo world (other) (o+x), e anche questo deve assediato su tutte le directory principali lungo tutta la catena (www, var). E se voglio che apache sia in grado di leggere da un file, è necessario impostare il bit o+r.

Questo non è vero, non devi impostare rwx per altro'. Dovresti cambiare il proprietario e/o il gruppo della particolare cartella/file che stai tentando di proteggere. Ad esempio:

chown -R cwd:www-data /var/www/cwd.com
chmod 750 /var/www/cwd.com

Ora solo i membri del gruppo www-data può leggere /var/www/cwd.com . E solo tu (cwd) puoi scriverci. Se vuoi consentire alle tue applicazioni (tramite Apache) di scrivere/modificare i file anche in quella directory, modificala a 770.

Penso che questo copra tutti i tuoi problemi, non vedo alcun motivo per cambiare l'utente con cui è in esecuzione apache.


Linux
  1. Come trovare file di configurazione MySQL, PHP e Apache

  2. Differenza tra /var/log/messages, /var/log/syslog e /var/log/kern.log?

  3. UNIX / Linux :Qual è il permesso corretto delle directory /tmp e /var/tmp

  4. Cosa sono i file /dev/zero e /dev/null in Linux

  5. Django static_root in /var/www/... - nessuna autorizzazione a collectstatic

Che cos'è un Homelab e perché dovresti averne uno?

Cosa c'è di diverso tra /bin/false e /sbin/nologin come shell dell'utente nologin

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

Qual è il modo migliore per gestire le autorizzazioni per i dati www dell'utente di Apache 2 in /var/www?

I siti web dovrebbero vivere in /var/ o /usr/ in base all'utilizzo consigliato?

Quali autorizzazioni devono avere i file/le cartelle del mio sito Web su un server Web Linux?