ProFTPD & MySQL-Backend unter FreeBSD

Aus Wiki.hidden.ch
Wechseln zu: Navigation, Suche

ProFTPD ist ein mächtiger und praktischer FTP Daemon, der einfach mit MySQL Konfiguriert werden kann.

Installation des Ports

Zunächst installiert man den entsprechenden Port:

-su-2.05b# cd /usr/ports/ftp/proftpd-mysql/
-su-2.05b# make install clean

Anschliessend wählt man in der Oberfläche die gewünschten Optionen aus und bestätigt mit OK:

lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x                Options for proftpd-mysql 1.2.10_1                  x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x x             [ ] IPV6        Use IPv6                           x x
x x             [ ] LDAP        Use LDAP                           x x
x x             [X] MYSQL       Use MySQL                          x x
x x             [ ] POSTGRESQL  Use Postgres                       x x
x x             [ ] OPENSSL     Include mod_tls                    x x
x x             [ ] QUOTA       Include mod_quota                  x x
x x             [X] IFSESSION   Include mod_ifsession              x x
x x             [X] README      Include mod_readme                 x x
x x             [X] RATIO       Include mod_ratio                  x x
x x             [X] REWRITE     Include mod_rewrite                x x
x x             [X] WRAP        Include mod_wrap                   x x
tqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjqu
x                       [  OK  ]       Cancel                        x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

Sollte der MySQL-Client nicht installiert sein, so wird dies automatisch mitinstalliert. Nachdem die Installation abgeschlossen ist, müssen einige Änderungen am System durchgeführt werden.

Konfiguration

Man trägt zunächst im /etc/rc.conf folgendes ein:

# FTP Server
proftpd_enable="YES"


proftpd.conf

Die Datei /usr/local/etc/proftpd.conf wird benötigt, um den FTP Server zu Konfigurieren.


Erstellen einer MySQL Tabelle für Logins

Wir benötigen eine Tabelle, wo wir die Logindaten speichern können. Dazu erstellen wir (siehe Abschnitt FreeBSD & MySQL) eine Datenbank (z.b. server_admin) und dort eine Tabelle ftp_login:

#
# Tabellenstruktur für Tabelle `ftp_login`
#

CREATE TABLE `ftp_login` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(30) NOT NULL default '',
  `password` varchar(30) NOT NULL default '',
  `uid` int(11) NOT NULL default '80',
  `gid` int(11) NOT NULL default '80',
  `homedir` varchar(60) NOT NULL default '',
  `count` int(11) NOT NULL default '0',
  `last_host` varchar(50) NOT NULL default '',
  `last_ip` varchar(20) NOT NULL default '',
  `last_login` timestamp(14) NOT NULL,
  `active` tinyint(4) NOT NULL default '1',
  `shell` varchar(250) NOT NULL default '/sbin/nologin',
  PRIMARY KEY  (`id`),
  KEY `id` (`id`),
  KEY `username` (`username`),
  KEY `homedir` (`homedir`)
) TYPE=MyISAM COMMENT='FTP Login Informations';


PAM

PAM wird bei dieser Lösung nicht benötigt, da ProFTPD dies über das lokale mod_sql abwickelt.


Probleme beim Starten des Daemons

Sollte der Daemon beim start (siehe /var/log/messages) eine Mitteilung bringen, dass er das scoreboard nicht öffnen kann:

May 17 21:26:50 temp proftpd[84367]: temp.mrmouse.ch - error opening scoreboard: No such file or directory 

Dies rührt daher, dass bei der Installation vergessen wird, das Verzeichnis /var/run/proftpd zu erzeugen. Aber dies lässt sich ja schnell machen:

-su-2.05b# mkdir /var/run/proftpd

Im Allgemeinen findet man relativ schnell raus, was der Fehler ist:

-su-2.05b# /usr/local/libexec/proftpd -n -d 9 -c /usr/local/etc/proftpd.conf

-d 9 setzt den debug level auf 9 (ziemlich brauchbar)

-n verhindert, dass der Daemon in den Hintergrund geschoben wird

-c zeigt an, welches config-file benutzt werden sollte


Weblinks