{{tag>Trusty tutoriel BROUILLON}}
====== Comment coupler Vsftpd avec Apache ? ======
Ce tutoriel décrit comment donner un accès FTP aux sites web d'un serveur pour que ceux ci soient accessibles par le serveur sans problème de droits.
Pour cela, nous mettrons en œuvre un serveur **Vsftpd** avec des utilisateurs virtuels.
===== Pré-requis =====
* Disposer des droits d'administration sur le serveur.
* Ce tutoriel fonctionne sur un serveur Lighty **LLSP** ou sur un serveur Apache **LAMP**
Nous supposons ici :
* le serveur LLSP déjà installé (cf la page [[logiciel:internet:lighty:start]])
* sa racine est **/var/www/**
===== Première étape =====
Installez le paquet **[[apt>vsftpd,db6.0-util]]** ou en ligne de commande :$ sudo apt install vsftpd db6.0-util
Cela installe :
* **vsftpd**
* et un outil qui nous permettra la création d'une base de données des utilisateurs.
===== Autres étapes =====
==== Création des répertoires ====
* Les données des sites seront stockées sous **/var/www**.
* Les données de configuration de **vsftpd** seront stockées sous **/etc/vsftpd**. Ce répertoire n'est pas créé à l'installation.
* Les fichiers de configurations de chaque utilisateur seront stockés dans le répertoire **/etc/vsftpd/users.conf/**
Il faut donner les droits à l'utilisateur et au groupe www-data :
* sudo chown -R www-data:www-data /var/www
sudo mkdir -p /etc/vsftpd/users.conf/
A chaque ajout de site dans le répertoire **/var/www/**, il faudra positionner correctement les droits.
==== Création de la base d'utilisateurs ====
Nous utiliserons une base de données la plus simple possible : nous allons créer un simple fichier texte, qui contiendra les couples login/mot-de-passe. A l'aide de db6.0-util, nous transformerons ce fichier en base de données.
Ce fichier contient les noms d'utilisateurs et mots de passe associés. Pensez à changer les droits d'accès à ces fichiers.
Créez le fichier **/etc/vsftpd/users.txt** :
* sudo touch /etc/vsftpd/users.txt
[[tutoriel:mini-tutoriels:ficedit#Modifier un fichier avec les droits d'administration|Ouvrez avec les droits d'administration]] le fichier **/etc/vsftpd/users.txt** pour y écrire les noms d'utilisateurs et leurs mots de passe comme ceci :
webmaster@monsite.tld
password1
user@monsite.tld
password2
Compilons ce fichier texte et changeons les droits de la base de données :
* sudo db6.0_load -T -t hash -f /etc/vsftpd/users.txt /etc/vsftpd/users.db
sudo chmod 600 /etc/vsftpd/users.*
==== Configuration de PAM ====
**Vsftpd** utilise **PAM** pour l'authentification.
[[tutoriel:mini-tutoriels:ficedit#Modifier un fichier avec les droits d'administration|ouvrez avec les droits d'administration]] le fichier **/etc/pam.d/vsftpd** pour remplacer son contenu par :
auth required pam_userdb.so db=/etc/vsftpd/users
account required pam_userdb.so db=/etc/vsftpd/users
==== Configuration de VSFTPD ====
Il ne reste plus que Vsftpd lui même à configurer.
Sauvegardez les fichiers de configuration :
* sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original
=== Fichier vsftpd.conf ===
Toute l'astuce réside dans la ligne guest-username. On utilise l'utilisateur **www-data** qui permet au serveur de pouvoir lire les fichiers écrits par **vsftpd**.
[[tutoriel:mini-tutoriels:ficedit#Modifier un fichier avec les droits d'administration|Ouvrez avec les droits d'administration]] le fichier **/etc/vsftpd.conf** pour le modifier comme ceci :
# Pas d'accès anonyme, que des utilisateurs locaux
anonymous_enable=NO
local_enable=YES
# Active les utilisateurs virtuels
# Vsftpd utilise en fait l'utilisateur www-data
guest_enable=YES
guest_username=www-data
nopriv_user=www-data
write_enable=YES
# On restreint l'utilisateur à son dossier de connexion
chroot_local_user=YES
# Utilisation de PAM pour l'authentification
pam_service_name=vsftpd
# Configuration par utilisateur
user_config_dir=/etc/vsftpd/users.conf
La dernière ligne permet d'inclure les fichiers de configuration par utilisateur qui se situent dans le répertoire **/etc/vsftpd/users.conf**.
=== Configuration par utilisateur ===
Pour chaque utilisateur déclaré dans le fichier users.db, il faut maintenant créer dans le répertoire **/etc/vsftpd/users.conf** un fichier contenant ses informations.
Par exemple, pour l'utilisateur user@monsite.tld, [[tutoriel:mini-tutoriels:ficedit#Modifier un fichier avec les droits d'administration|créez avec les droits d'administration]] le fichier **/etc/vsftpd/users.conf/user@monsite.tld** pour y écrire ceci :
anon_world_readable_only=NO
local_root=/var/www/site1
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
==== Test du système ====
Relancez le service SFTPD :
* sudo service vsftpd restart
et tentez une connexion ftp :
$ ftp
ftp> open 192.168.1.102
Connected to 192.168.1.102.
220 Welcome to blah FTP service.
Name (192.168.1.102:server): user1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Copiez un fichier via ftp, et vérifier ses droits sur le serveur par :
* ls -l /var/www/site1/
Le fichier doit appartenir à l'utilisateur www-data.
===== Conclusion =====
===== Problèmes connus =====
===== Voir aussi =====
* [[https://doc.ubuntu-fr.org/tutoriel/coupler_vsftpd_et_apache]]
----
//Contributeurs principaux : [[:utilisateurs:jamaique]].//