web-dev-qa-db-fra.com

Permissions de fichiers par défaut pour l'utilisateur php www-data

J'ai un php installé sur ma machine Ubuntu. La racine Web est /var/www

Je définis les autorisations pour ce dossier comme suit:

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

ftpuser est l'utilisateur que j'ai configuré afin de pouvoir ftp vers/var/www à partir d'une autre machine du réseau. www-data est l'utilisateur que php utilise. J'ai vérifié à l'aide de whoami de php.

Chaque fois que je télécharge un nouveau fichier sur la machine, le groupe n'a pas de permissions sur le fichier. Donc, lorsque j'essaie d'y accéder dans mon navigateur via machine-name/new-file.php, on me dit que la permission est refusée et que je dois utiliser chmod le nouveau fichier.

Je me demande s’il existe un moyen de permettre à l’utilisateur/groupe de www-data de disposer par défaut des autorisations d’accès aux nouveaux fichiers afin de ne pas avoir à garder chmod à chaque nouveau fichier?

8
JD Isaacks

Vous pouvez utiliser ACL. Pour configurer ACL pour Ubuntu 10.10, commencez par monter les systèmes de fichiers avec l'option acl dans/etc/fstab.

Sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/ext4 par défaut, acl 0 1

Sudo mount -o remount,acl /

Créez ensuite un groupe auquel un utilisateur peut appartenir à cette fin.

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

L'utilisateur doit se déconnecter puis se reconnecter pour devenir membre du groupe de développeurs.

Bien sûr, ne le faites pas si vous avez le contenu souhaité dans le répertoire/var/www, mais juste pour illustrer sa configuration:

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

Remplacez ensuite les références à "/ var/www" par "/ var/www/public" dans un fichier de configuration, puis rechargez.

Sudo vim /etc/Apache2/sites-enabled/000-default
Sudo /etc/init.d/Apache2 reload

Si nous voulions restreindre la suppression et le changement de nom de tous, à l'exception de l'utilisateur qui a créé le fichier:

Sudo chmod +t /var/www/public

De cette façon, si nous voulons créer des répertoires pour des infrastructures qui existent en dehors de la racine du document Apache ou peut-être créer des répertoires accessibles en écriture au serveur, cela reste simple.

Répertoire des journaux en écriture Apache:

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

Répertoire de la bibliothèque lisible par Apache:

Sudo mkdir /var/www/lib
Sudo chgrp www-data /var/www/lib
Sudo chmod 0750 /var/www/lib
6
user8290

Je suis sûr que vous avez déjà réglé ce problème, c'est donc pour quelqu'un avec une demande similaire

lancez la commande "changer de propriétaire" sur votre dossier webroot:

Sudo chown manny -R www

Cela vous fera le propriétaire remplacer "manny" avec votre nom d'utilisateur, vous permettant d'écrire/lire dans le dossier www

4
Manny

Si votre serveur Web ne parvient même pas à lire les fichiers, il est très probable que les autorisations de new-file.php atteignent quelque chose comme 600 (lecture et écriture pour le propriétaire). Recherchez un paramètre mask dans votre application FTP et assurez-vous qu'il ressemble à 007.

Si votre application Web a besoin de modifier les fichiers (ou d’autres opérations qui ne peuvent être effectuées que par le propriétaire du fichier), vous avez besoin d’une autre approche. Si vous utilisez Apache, vous devriez envisager d'utiliser le itk MPM . Avec ce module, vous pouvez obliger Apache à exécuter/ouvrir les fichiers en utilisant le même utilisateur que "ftpuser". Si vous avez besoin de plus d'informations sur ce sujet, ajoutez un commentaire.

1
Lekensteyn