Configuration des autorisations VSFTPD avec le serveur Apache

8

J'ai une machine virtuelle exécutant Ubuntu 10.10. J'utilise Netbeans et télécharge des fichiers sur un ftp sur la machine virtuelle. J'utilise vsftpd.

Le problème que j'ai, c'est que le propriétaire du dossier /var/wwwest l'utilisateur apachepour que le serveur apache puisse lire les fichiers. Jusqu'ici tout va bien.

Mais lorsque j'essaie de télécharger un fichier d'un utilisateur ftp, user1je ne le peux pas. Je sais quel est le problème. Ma question est, comment configurer correctement les autorisations pour l'utilisateur apacheet user1pouvoir écrire / lire tous les fichiers dans le répertoire / var / www?

Tek
la source

Réponses:

17

Créez un groupe www-userset faites-en le propriétaire du groupe /var/www. Ensuite, affectez les utilisateurs apacheet user1au groupe et définissez les autorisations sur le /var/wwwrépertoire sur 775. Cela permettra à user1tous les autres utilisateurs du www-usersgroupe de lire et d'écrire /var/www; il sera également plus facile d'autoriser d'autres utilisateurs à écrire /var/www- affectez simplement l'utilisateur au www-usersgroupe.

Modifier: les autorisations correctes sur /var/wwwest 2775, ce qui inclut setgid afin que les fichiers et répertoires à l'intérieur /var/wwwhéritent de la propriété du groupe de /var/www.

bwDraco
la source
Très bonne réponse. Sauf apache est pas en mesure de lire les fichiers après je télécharger quelque chose avec user1j'ai couru les commandes suivantes: chown -R apache:www-users /var/www, usermod -g www-users apache, usermod -g www-users user1, chmod 775 /var/www. Suis-je en train de manquer quelque chose?
Tek
Le umask peut être défini pour refuser les autorisations de lecture des autres; voyez si changer l'umask aide.
bwDraco
Oui. Cela en faisait partie.
Tek
10
Voici les étapes au cas où des googleurs auraient besoin d'un indice. 1) set up vsftpd for umask 0027 (/etc/vsftpd.conf) [local_umask=0027] 2) create www-users group (groupadd www-users) 3) add user to group (usermod -a -G group user) 4) Set apache to run as www-users group (httpd.conf) 5) chgrp www-users /var/www 6) chmod 2775 /var/www
Tek
2
Aussi, essayez d' ajouter la permission setgid dans le répertoire: chmod g+s /var/www. Cela garantira que les fichiers et répertoires créés à l'intérieur du répertoire appartiennent au groupe propriétaire du répertoire.
bwDraco