Autorizzazioni file predefinite per dati www utente php


8

Ho un php installato sulla mia macchina Ubuntu. La radice del web è/var/www

Ho impostato le autorizzazioni per questa cartella in questo modo:

sudo chown -R ftpuser: www-data / var / www

ftpuser è l'utente che ho impostato in modo da poter ftp su / var / www da un'altra macchina sulla rete. www-data è l'utente che utilizza php. Ho ricontrollato usando whoamida php.

Ogni volta che carica FTP un nuovo file sulla macchina, il gruppo non ha autorizzazioni per il file. Quindi quando provo ad accedervi nel mio browser tramite machine-name/new-file.phpmi viene negato il permesso e devo andare e chmodil nuovo file.

Mi chiedo se esiste un modo per impostare automaticamente l'utente / gruppo www-data per disporre delle autorizzazioni di accesso ai nuovi file in modo da non dover mantenere chmod ogni nuovo file?

Risposte:


6

È possibile utilizzare ACL. Per impostare ACL per Ubuntu 10.10, innanzi tutto montare i file system con l'opzione acl in / etc / fstab.

sudo vim /etc/fstab

UUID = valori predefiniti xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4, acl 0 1

sudo mount -o remount,acl /

Quindi creare un gruppo a cui un utente può appartenere a questo scopo.

sudo groupadd developers
sudo usermod -a -G developers $username

L'utente deve disconnettersi e riconnettersi per diventare un membro del gruppo di sviluppatori.

Ovviamente, non farlo se hai contenuto nella directory / var / www che desideri, ma solo per illustrare come configurarlo per iniziare:

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root.developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

Quindi sostituire i riferimenti a "/ var / www" con "/ var / www / public" in un file di configurazione e ricaricare.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

Se volessimo limitare l'eliminazione e la ridenominazione da tutti tranne l'utente che ha creato il file:

sudo chmod +t /var/www/public

In questo modo, se vogliamo creare directory per framework esistenti al di fuori della radice del documento Apache o magari creare directory scrivibili sul server, è ancora facile.

Directory dei log scrivibili da Apache:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Directory della libreria leggibile da Apache:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/lib
sudo chmod 0750 /var/www/lib

Questo ha funzionato perfettamente per me, ma sarei interessato se si potrebbe spiegare che cosa l' chmod g+se setfaclcomandi ha fatto (e dei relativi parametri).
Greg

4

Sono sicuro che l'hai già risolto, quindi questo è per chiunque abbia una richiesta simile

esegui il comando "cambia proprietà" nella cartella webroot:

sudo chown manny -R www

Questo ti farà sostituire il proprietario "manny" con il tuo nome utente, consentendoti di scrivere / leggere nella cartella www


1

Se il tuo server web non riesce nemmeno a leggere i file, è molto probabile che le autorizzazioni di new-file.phpsiano qualcosa come 600 (leggi e scrivi per il proprietario). Cerca un'impostazione umask nella tua applicazione FTP e assicurati che sia qualcosa come 007.

Se l'applicazione Web deve modificare i file (o altre operazioni che possono essere eseguite solo dal proprietario del file), è necessario un altro approccio. Se stai usando Apache, dovresti considerare di usare itk MPM . Con quel modulo, puoi far funzionare / aprire Apache i file usando lo stesso utente di "ftpuser". Se hai bisogno di maggiori informazioni su questo argomento, aggiungi un commento.

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.