Installation malheureuse de vsftpd sous Debian 10 chez Gandi à cause de /srv/ftp

05/10/2019

J'ai eu le besoin assez classique de devoir installer un serveur vsftpd sur une machine Debian (10) hébergée dans l'infrastructure cloud de Gandi.
Malheureusement pour moi, le paquet ou plutôt les scripts d'installations qui sont dans le paquet vsftpd présent dans les dépôts officiels débouchent sur une erreure dû au dossier /srv/ftp...

Pourtant ça a commencé assez classiquement avec un apt-get install.

webdeb10# apt-get install vsftpd
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  vsftpd
0 upgraded, 1 newly installed, 0 to remove and 34 not upgraded.
Need to get 0 B/153 kB of archives.
After this operation, 357 kB of additional disk space will be used.
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package vsftpd.
(Reading database ... 37253 files and directories currently installed.)
Preparing to unpack .../vsftpd_3.0.3-12_amd64.deb ...
Unpacking vsftpd (3.0.3-12) ...
Setting up vsftpd (3.0.3-12) ...
mkdir: cannot create directory ‘/srv/ftp’: Permission denied
dpkg: error processing package vsftpd (--configure):
 installed vsftpd package post-installation script subprocess returned error exit status 1
Processing triggers for man-db (2.8.5-2) ...
Processing triggers for systemd (241-7~deb10u1) ...
Errors were encountered while processing:
 vsftpd
E: Sub-process /usr/bin/dpkg returned an error code (1)

Donc visiblement le processus de création essaie de créer dans /srv le dossier ftp et ça pète car l'utilisateur "root" n'a pas les permissions.
Le dossier /srv existe bien et après vérification des droits, il n'y a rien d'étrange.
Je tente de créer à la main le dossier avec l'utilisateur root et j'ai la même erreur.

Après quelques recherches sur le net, le dossier /srv, je découvre que ce dossier est un peu spécial chez certains hebergeur dont Gandi. Il est utilisé et réservé pour monter les disques "cloud" empêchant certaines opérations dans ce dossier.

Je regarde les scripts d'installation du paquet vsftpd à la recherche du dossier /srv/ftp.

webdeb10# cat /var/lib/dpkg/info/vsftpd.* | grep /srv/ftp
_DIRECTORY="${RET:-/srv/ftp}"
_DIRECTORY="/srv/ftp"
Default: /srv/ftp

Après une lecture des trois scripts d'installation qui contiennent le terme "/srv/ftp" : vsftpd.templates, vsftpd.postinst, vsftpd.postrm, je décide de me lancer dans la modification de ses scripts. On n'oubliera pas de supprimer l'installation de vsftpd en cours apt-get remove vsftpd.

Le principe de la manoeuvre va être de récupérer le paquet .deb depuis les dépots et d'extraire les fichiers (dont ceux d'installation) du paquet.

webdeb10# apt-get download vsftpd
webdeb10# mkdir vsftpd
webdeb10# ls
vsftpd_3.0.3-12_amd64.deb vsftpd

webdeb10# dpkg-deb --extract vsftpd_3.0.3-12_amd64.deb vsftpd
webdeb10# dpkg-deb --control vsftpd_3.0.3-12_amd64.deb vsftpd/DEBIAN

webdeb10# cd vsftpd/DEBIAN 
webdeb10# ls
conffiles  config  control  md5sums  postinst  postrm  prerm  templates

On retrouve bien nos 3 fichiers comportant le terme "/srv/ftp" que l'on va remplacer par autre chose (dans mon cas, j'ai choisi /opt/ftp) et j'utilise l'éditeur jed pour modifier les trois occurences puis je reconstruis le paquet.

webdeb10# jed templates
webdeb10# jed postinst
webdeb10# jed postrm
webdeb10# dpkg-deb --build vsftpd
dpkg-deb: building package 'vsftpd' in 'vsftpd.deb'.

Pour terminer, on lance l'installation du paquet maison et ça se termine bien : le dossier /opt/ftp est bien crééet vftpd est correctement installé.

webdeb10# dpkg -i vsftpd.deb
Retour aux billets