2013-09-16 13:33:11 +0000 2013-09-16 13:33:11 +0000
27
27

Accorder des autorisations d'écriture au groupe www-data

Je suis en train de créer un site web et une partie de la fonction consiste à écrire des données générées par les utilisateurs avec php. J'utilise nginx sur Ubuntu 13.04. Pour l'instant, je ne fais que tester et tout est servi par nginx sur locahost.

Mon script php n'arrive pas à écrire le fichier texte (bien que je puisse le faire manuellement) et je pense que c'est un problème de permissions pour écrire dans mon répertoire /var/www/example.com/public_html.

Pour le moment, je (iain) possède ce répertoire mais il semble plus logique de transférer la propriété du répertoire /var/www et de tout ce qu'il contient à l'utilisateur de www-data (ou devrait-il s'agir d'un groupe ?) et de m'ajouter au groupe www-data. Est-ce que la façon suivante est la bonne pour faire cela ?

useradd -G www-data iain
chown -R www-data:www-data /var/www/example.com
chmod 775 /var/www

Alors, cela signifie-t-il que n'importe qui dans le groupe www-data peut maintenant lire, écrire et exécuter dans /var/www ?

Réponses (1)

53
53
53
2013-09-16 13:53:44 +0000

Tout d'abord, useradd crée un nouvel utilisateur. Comme vous (iain) existez déjà, vous voulez appeler usermod à la place. Ce serait donc :

sudo usermod -aG www-data iain
addgroup www-data

(notez le -a sur les serveurs basés sur Debian (Ubuntu inclus) qui vous ajoutera à ce groupe, et conservera votre appartenance aux autres groupes. Oubliez cela et vous n'appartiendrez qu'au groupe www-data - cela pourrait être une mauvaise expérience si l'un d'entre eux était wheel. Sur les serveurs de type SUSE, l'option est -A au lieu de -aG alors lisez attentivement man usermod pour bien faire).

Deuxièmement, vous ne voulez pas qu'apache ait un accès rw complet à /var/www : c'est potentiellement une faille de sécurité majeure. En règle générale, n'autorisez que ce dont vous avez besoin, et rien de plus principe du moindre privilège ). Dans ce cas, vous avez besoin d'apache (www-data) et vous (www-data groupe) pour écrire (et lire) dans /var/www/example.com/public_html, donc

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 770 /var/www/example.com/public_html

Editer : pour répondre à votre question initiale, oui, tout membre de www-data peut maintenant lire et exécuter /var/www (parce que le dernier bit de vos permissions est 5 = lecture + exécution). Mais comme vous n'avez pas utilisé le commutateur -R, cela ne s'applique qu'à /var/www, et non aux fichiers et sous-répertoires qu'il contient. Maintenant, savoir s'ils peuvent écrire est une autre question, et dépend du groupe de /var/www, que vous n'avez pas défini. Je suppose que c'est typiquement root:root, donc non, ils ne peuvent (probablement) pas écrire.

Modifier le 2014-06-22 : ajout d'une note indiquant que l'option -aG est valable sur les serveurs basés sur Debian. Elle varie apparemment en fonction de la distribution, donc lisez attentivement man avant de l'exécuter.