installation ftp ubuntu serveur 0

À quoi sert l’installation d’un serveur FTP

La réponse la plus logique qui est en général donnée est la possibilité d’envoyer des fichiers sur son serveur. La réponse n’est qu’à moitié exacte. L’envoi de fichiers peut très bien se faire via une connexion 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 à un dossier particulier comme par exemple www.

Nous allons donc décrire dans ce présent tutoriel l’installation d’un serveur FTP avec droits Apache/PHP.

Pour rappel, le changement de propriétaire d’un fichier ou 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 vsftpd (Very Secure FTP Daemon)

apt-get install vsftpd
Une fois vsftpd installé, il vous faudra créer un utilisateur avec des droits spécifiques. Afin de sécuriser l’ensemble, nous allons utiliser la librairie d’encryptage Berkeley (ainsi que les outils 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.deb
dpkg -i libdb6.0_6.0.19-3ubuntu1_amd64.deb
apt-get -f install

wget http://fr.archive.ubuntu.com/ubuntu/pool/universe/d/db6.0/db6.0-util_6.0.19-3ubuntu1_amd64.deb
dpkg -i db6.0-util_6.0.19-3ubuntu1_amd64.deb
apt-get -f install

Si la librairie n’est pas à jour, vous pourrez trouver la plus récente dans les packages d’Ubuntu :
https://packages.ubuntu.com/

Création d’un user (utilisateur FTP)

Nous allons créer deux dossiers :

  • /etc/vsftpd/users.conf/ dans lequel sera présent notre utilisateur avec ses droits et ses accès aux répertoires
  • /etc/vsftpd/ dans lequel nous allons créer l’utilisateur avec son mot de passe encrypté

mkdir /etc/vsftpd
mkdir /etc/vsftpd/users.conf
vi /etc/vsftpd/users

Dans ce fichier, vous devez renseigner l’identifiant et le mot de passe :
admin
un_mot_de_passe
admin2
un_mot_de_passe2

Attention ! Il ne faut surtout pas ajouter de saut de ligne supplémentaire vide.

Nous chiffrons 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/users
chmod 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 choisi précédemment) :
vi /etc/vsftpd/users.conf/admin
Nous remplissons ce fichier de la manière suivante :
anon_world_readable_only=NO
local_root=/var/www
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

Où 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édemment créé (sans l’extension .db) :
vi /etc/pam.d/vsftpd
Commentez l’ensemble du fichier et ajoutez ces deux lignes à la fin :
auth required pam_userdb.so db=/etc/vsftpd/users
account 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és via FTP.
vi /etc/vsftpd.conf
Vous devrez activer les éléments suivants dans le fichier vsftpd.conf :
# 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
allow_writeable_chroot=YES

Rendre les fichiers htaccess / htpasswd visibles

Pour pouvoir voir et ouvrir les fichiers .htaccess et .htpasswd visibles avec votre logiciel FTP, il suffit de rajouter dans le fichier de configuration de vsftpd la ligne suivante :
force_dot_files=YES