remonter vers le haut
Chrooter les utilisateurs ftp en www-data (vsftpd) par Promatec Digital | Temps de lecture : 2 minutes
Partager sur Facebook Partager sur Twitter Partager sur Linkedin
Contactez l'Agence Web Promatec Digital

Blog de L'Agence Web Promatec Digital WordPress, WooCommerce, SEO, Optimisation ...

Si vous utilisez l’excellent serveur FTP Vsftpd (serveur FTP léger et efficace écrit pour la sécurité …) et que vous uploadez les sources de votre CMS (WordPress ou Joomla par exemple), vous risquez rapidement d’avoir des problèmes d’écriture. En effet, le serveur Web (Apache) est exécuté avec l’utilisateur www-data. Et donc, comme vous avez uploadé vos fichiers avec un utilisateur FTP, votre CMS ne parvient pas à écrire dans certain dossiers ou bien même à écraser certain fichiers (en cas de mise à jour du CMS via le backoffice par exemple) avec le fameux “permission denied” …

Afin de palier à ce problème, il convient de “chrooter” l’utilisateur FTP afin qu’il puisse uploader avec les droits de l’utilisateur www-data. Ainsi, aussi bien en FTP que via le CMS, le propriétaire restera toujours www-data.

Chrooter l’utilisateur FTP en www-data

On part du principe que vous avez déjà installé le serveur FTP Vsftp sur votre serveur. Modifiez la configuration du fichier de configuration /etc/vsftpd.conf :

listen=YES
anonymous_enable=NO
local_enable=YES
virtual_use_local_privs=YES
write_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
guest_enable=YES
ftp_username=www-data
chmod_enable=YES
chown_uploads=YES
chown_username=www-data
guest_username=www-data
force_dot_files=YES
pasv_enable=YES
pasv_promiscuous=YES
pasv_min_port=1024
pasv_max_port=65535
max_clients=10
max_per_ip=10
port_promiscuous=YES
port_enable=YES
listen_port=21988
ftp_data_port=20
user_sub_token=$USER
hide_ids=YES
user_config_dir=/etc/vsftpd
chroot_local_user=YES
allow_writeable_chroot=YES
log_ftp_protocol=YES
vsftpd_log_file=/var/log/vsftpd.log

Ainsi on a déterminé que nous souhaitons que le propriétaire des fichiers uploadés  soit www-data.

On a également spécifié le chemin de configuration des utilisateurs FTP user_config_dir=/etc/vsftpd

Notez au passage, que pour des raisons de sécurité, il convient de modifier le port d’écoute par défaut du serveur FTP (21) par un autre (ici 21988).Cela évite, en effet, que le serveur se fasse bêtement scanner et/ou attaquer en force brute sur le port 21.

Autre point important dans cette configuration, nous utilisons le mode ‘passif‘. Le mode passif est recommandé dans le cas où un pare-feu (firewall) filtre votre réseau. L’avantage de ce mode est que votre serveur FTP n’initialise aucune connexion FTP.

pasv_enable=YES

Créer le dossier et le fichier de config de l’utilisateur FTP

Il convient de créer le dossier /etc/vsftpd comme précédemment spécifié

$ mkdir /etc/vsftpd

Via la commande adduser, il faut créer en amont, l’utilisateur UNIX ‘wpsite‘ (et donc l’utilisateur FTP) :

$ adduser wpsite

Puis il faut créer le fichier portant le même nom que votre utilisateur FTP.  Dans l’exemple, l’utilisateur s’appelle ‘wpsite

$ nano /etc/vsftpd/wpsite

Enfin, il reste a spécifier dans le fichier de l’utilisateur le chemin ou se trouve votre CMS (exemple : /var/www/html) :

local_root=/var/www/html

Pour terminer, il faut redémarrer le serveur Vsftpd afin que la nouvelle configuration soit prise en compte :

$ service vsftpd restart

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *