A quoi sert l’installation d’un serveur FTP
La réponse la plus logique qui est en générale donnée est la possibilité d’envoyer des fichiers sur son serveur. La réponse n’est qu’à moitié exacte. L’envoie de fichiers peut très bien se faire via une connection ssh avec le compte root. Vous aurez cependant 2 problèmes
- Les droits sur les dossiers et fichiers seront donnés à « root » ce qui signifie qu’apache/php (identifié sous www-data’ n’aura aucun droit d’écriture)
- Vous ne pouvez pas restreindre l’accès à une dossier particulier comme par exemple www
Nous allons donc décrire dans ce présent tutoriel l’installation d’un serveur FTP avec droit apache/php
Pour rappel le changement de propriétaire d’un fichier dossier se fait de la manière suivante
chown www-data:www-data /var/www
et de manière récursive (dossiers + sous dossiers)
chown -R www-data:www-data /var/www
Installation de vsftp (very secured ftp)
apt-get install vsftpd
Une fois vsftp installé il vous faudra créer une utilisateurs avec des droits spécifiques. Afin de sécuriser l’ensemble nous allons utiliser la librairie d’encrypatge Berkeley (ainsi que les tools associés). Celle ci n’étant pas disponible dans les paquets officiels, le plus simple est d’utiliser la commande wget et de l’installer via la commande dpkg.
wget http://fr.archive.ubuntu.com/ubuntu/pool/universe/d/db6.0/libdb6.0_6.0.19-3ubuntu1_amd64.debdpkg -i libdb6.0_6.0.19-3ubuntu1_amd64.debapt-get -f install
wget http://fr.archive.ubuntu.com/ubuntu/pool/universe/d/db6.0/db6.0-util_6.0.19-3ubuntu1_amd64.debdpkg -i db6.0-util_6.0.19-3ubuntu1_amd64.debapt-get -f install
Si la librairie n’est pas à jour vous pourrez trouver la plus récente dans les packages universe d’ubuntu :
http://packages.ubuntu.com/fr/trusty/database/
Création d’un user (utilisateur ftp)
Nous allons créer deux dossiers
- /etc/vsftpd/users.conf/ dans lequel sera présente notre utilisateur avec les droits et les accès aux répertoires
- /etc/vsftpd/ dans lequel nous allons créer l’utilisateur avec son mot de passe encrypté
mkdir /etc/vsftpdmkdir /etc/vsftpd/users.confvi /etc/vsftpd/users
Dans ce fichier vous devez renseigner l’identifiant et le mot de passe
adminun_mot_de_passeadmin2un_mot_de_passe2
Attention ! il ne faut surtout pas ajouter de saut de ligne supplémentairement vide
Nous encryptons le fichier
db6.0_load -T -t hash -f /etc/vsftpd/users /etc/vsftpd/users.db
Puis nous restreignons les droits
chmod 600 /etc/vsftpd/userschmod 600 /etc/vsftpd/users.db
Enfin nous donnons des droits d’accès aux fichiers en créant le fichier admin (admin2 ou tout autre identifiant d’utilisateur choisis précédemment)
vi /etc/vsftpd/users.conf/admin
Nous remplissons ce fichier de la manière suivante
anon_world_readable_only=NOlocal_root=/var/www/write_enable=YESanon_upload_enable=YESanon_mkdir_write_enable=YESanon_other_write_enable=YES
Ou local_root sera le dossier auquel l’utilisateur admin aura accès
Nous éditons le fichier vsftpd dans le dossier pam.d afin de donner le chemin vers le fichier users.db précédement créé (sans l’extention .db)
vi /etc/pam.d/vsftpd
Commenter l’ensemble du fichier et ajouter ces deux lignes à la fin
auth required pam_userdb.so db=/etc/vsftpd/usersaccount required pam_userdb.so db=/etc/vsftpd/users
Configuration de vsftpd
Dernière étape, il suffit de configurer le fichier vsftpd.conf. Les lignes
- guest_username=www-data et nopriv_user=www-data
permettent d’affecter www-data (soit le couple apache/php) comme propriétaire des fichiers envoyé via ftp
vi /etc/vsftpd.conf
Vous devrez activer les élements suivant dans le fichier vsftpd.conf
# Pas d'accès anonyme, que des utilisateurs locauxanonymous_enable=NOlocal_enable=YES# Active les utilisateurs virtuels# Vsftpd utilise en fait l'utilisateur www-dataguest_enable=YESguest_username=www-datanopriv_user=www-datawrite_enable=YES# On restreint l'utilisateur à son dossier de connexionchroot_local_user=YES# Utilisation de PAM pour l'authentificationpam_service_name=vsftpd# Configuration par utilisateuruser_config_dir=/etc/vsftpd/users.confallow_writeable_chroot=YES
Rendre les fichiers htaccess / htpasswd visible
Pour pouvoir voir et ouvrir les fichiers htaccess et htpasswd visible avec votre logiciel ftp il suffit de rajouter dans le fichier conf de vsftpd les lignes suivantes
force_dot_files=YES
Un tuto aussi bien expliqué c’est juste Amazing !