Résoudre l’erreur de VsFTPd : refusing to run with writable root inside chroot()

Dans ce précédent tutoriel qui vous expliquait comment installer le logiciel VsFTPd et nous avons vu ensemble comment configurer le logiciel. Pour rappel, VsFTPd est le logiciel le plus sécurisé pour faire du FTP et il est surtout très léger donc c’est celui que j’utilise pour faire ca. Dans la configuration de ce tutoriel ou si vous l’avez activé de votre côté avant d’arriver ici, j’ai parlé d’activer la ligne suivante dans la configuration :

chroot_local_user=YES

Dans la configuration que nous avons vu dans l’autre tutoriel, vous avez renseigné la valeur de local_root= qui est le répertoire racine pour les utilisateurs locaux et quand il se connecte, il arrive dessus. Je vous le rappel, car cela a son importance pour ce qui va suivre.

Cette directive chroot_local_user permet d’empêcher un utilisateur de remonter dans l’arborescence du système de fichiers et de s’assurer qu’il reste confiné dans son répertoire de départ donc dans notre cas, celui que l’on a mis dans local_root.

En continuant votre installation et configuration de VsFTPd, lors de vos tests vous avez peut être rencontré cette erreur plutôt bloquante :

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

Comment réparer cette erreur de VsFTPd

VsFTPd étant un peu dur sur la sécurité, il faut faire un peu de configuration supplémentaire sur les droits et permissions des dossiers. N’oubliez pas que la gestion des permissions est quelque chose de très important même sous WordPress et c’est donc aussi tout logiquement le cas pour le logiciel VsFTPd.

Quand chroot_local_user est activé, vsftpd exige que le répertoire racine de l’utilisateur ne soit pas modifiable directement par l’utilisateur. Cela signifie que l’utilisateur ne doit pas avoir de droits d’écriture sur son propre répertoire racine. Pour cela, vous pouvez alors créer un nouveau répertoire par exemple files. Pour reprendre ce que j’avais mis dans le tutoriel précédent ça nous ferait donc quelque chose qui ressemble maintenant à ça :

mkdir -p /var/myftp/files/
/var/myftp/ => /var/myftp/files/

Je simplifie volontairement le tout pour que vous puissiez bien voir le concept et résoudre cette erreur. Si vous avez plusieurs utilisateurs ou une arborescence de fichier plus compliqué, vous pourrez adapter en conséquence pour votre cas particulier et votre contexte.

On va maintenant restreindre les droits sur le dossier racine sans toutefois toucher au nouveau que l’on vient de créer :

sudo chmod a-w /var/myftp/

Cela rendra le répertoire /var/myftp/ en lecture seule pour l’utilisateur, mais il pourra toujours écrire comme bon lui semble dans le sous-répertoire /var/myftp/files. Vous pouvez alors redémarrer VsFTPd avec la commande :

sudo systemctl restart vsftpd

Essayez maintenant de vous connecter à votre serveur FTP et cette fois tout devrait bien se passer sans cette erreur 500 OOPS: vsftpd: refusing to run with writable root inside chroot().

Laisser un commentaire