26/04/2018
Installation d'un serveur FTP (proftpd) sur MacOS High Sierra
Depuis la version High Sierra de MacOS, Apple a supprimé le serveur FTP par défaut. Pourtant, même si FTP est un vieux protocole, il reste massivement utilisé, et il peut être utile d'avoir un serveur de test sur son Macbook.
Besoins :
Il s'agit d'une configuration uniquement dédiée aux tests.
Au lieu de passer par l'App Store et d'installer une application GUI, mon choix s'est porté sur Proftpd, qui présente l'immense avantage d'être un grand classique et disponible sur *nux et MacOS.
Il suffit d'une commande brew
pour l'installer :
brew install proftpd
Pour pouvoir configurer des utilisateurs indépendants du système, il
suffit d'utiliser la directive AuthUserFile.
Celle-ci permet de faire le lien sur un fichier d'utilisateurs en plus des
utilisateurs du système qui seront autorisés à se connecter au serveur
FTP. Le format du fichier est le même que le format du fichier /etc/passwd
.
L'utilitaire fournit avec proftpd, ftpasswd
,
permet de générer 1 ligne par utilisateur de façon simple.
Pour rajouter un utilisateur toto
, il suffit de faire :
cd /usr/local/Cellar/proftpd/1.3.6/.bottle/etc
ftpasswd --passwd --name=toto --uid=3003 --home=/tmp/ftp --shell=/bin/bash
Le fichier de configuration par défaut est modifié pour :
L'ajout d'un fichier de Log, se fait via la directive SystemLog
SystemLog /var/log/proftpd/proftpd.log
Le lien vers le fichier des utilisateurs se fait via la directive AuthUserFile
,
après avoir décommenté DefaultRoot
. L'utilitaire ftpasswd
produit 1 fichier nommé ftpd.passwd
(le nom est modifiable).
DefaultRoot ~ AuthUserFile /usr/local/Cellar/proftpd/1.3.6/.bottle/etc/ftpd.passwd
Pour définir un message d'acceuil, il suffit de créer 1 fichier welcome.msg
Exemple de fichier de configuration :
Bonjour %U [provenance %R]. \o/ - Connexion %T. %N Utilisateur(s) connectés.
La référence au fichier message via la directive DisplayLogin
DisplayLogin /usr/local/Cellar/proftpd/1.3.6/.bottle/etc/welcome.msg
Le démarrage se fait alors (dans 1 script bash) en exécutant la commande
proftpd
:
#!/bin/bash export PROFTDHOME=/usr/local/Cellar/proftpd export PROFTD_ETC=$PROFTDHOME/1.3.6/.bottle/etc export PROFTD_BIN=$PROFTDHOME/1.3.6/sbin sudo $PROFTD_BIN/proftpd -c $PROFTD_ETC/proftpd.conf
On peut vérifier que le serveur est démarré :
raspoutine:etc fred$ sudo ps -lx | grep ftp -2 14099 1 104 0 31 0 4292052 748 - Ss 0 ?? 0:00.00 proftpd: (accepting connections)
La documentation fournit également la configuration plist pour définir le service FTP comme démarrable avec les services du système.
raspoutine:~ fred$ ftp localhost ftp: connect to address ::1: Connection refused ftp: Trying 127.0.0.1 ... Connected to localhost. 220 ProFTPD Server (ProFTPD Default Installation) [127.0.0.1] Name (localhost:fred): toto 331 Password required for toto Password: 230- Bonjour toto [provenance localhost]. \o/ - Connexion Thu Apr 26 08:44:20 2018. 1 Utilisateur(s) connectés. 230 User toto logged in ftp>