OPT_PFTPD 3.0.5

-------------------------------------------------------------------------------
Einfhrung
-------------------------------------------------------------------------------

Mit OPT_PFTPD ist es mglich, einen FTP-Server auf FlI4L auf Basis von PureFTP
(siehe auch http://www.pureftpd.org) laufen zu lassen.

fli4l ist eigentlich nicht fr Serverdienste gedacht. Um einen "richtigen"
ftp-Server einzurichten, eignet sich EISFAIR besser (http://www.eisfair.org).

Ich bernehme keine Verantwortung fr Fehler, die durch dieses Paket entstehen.
Wer einen sicheren FTP-Server haben will sollte sich selbst einlesen, und
kontrollieren, ob alles so luft wie es soll.

Diese Version ist aus OPT_PFTPD 0.7 von Florian Zierer hervorgegangen und fr
FLI4L 3.0.0 und FLI4L 3.0.1 gedacht. Sie ist nicht lteren Versionen benutzbar!

Fr FLI4L 2.0.8 ist Version 0.7 geeignet. Die Version 0.8 war eine
Zwischenversion fr FLI4L 2.1.9 und sollte aufgrund der Abhngigkeit von
OPT_LIBC5 und diverser Bugs im HTTP-Interface nicht mehr verwendet werden!

Da dieses Paket aktuelle Binaries, basierend auf PureFTP 1.0.21, verwendet,
ist OPT_LIBC5 nicht mehr erforderlich!


Hinweise zur Installation
-------------------------

VOR der Installation muss man die Verzeichnisse fr die Benutzerdaten
(/data/conf) und fr die Dateiablage (/data/ftp) anlegen.

In der Konsole:

mkdir /data/conf
mkdir /data/ftp

NACH der Installation und dem ersten Neustart von FLI4L muss man das
Verzeichnis fr die Dateiablage dem richtigen User/Gruppe zuweisen.

Dazu kann man folgenden Befehle an der Konsole bzw. ber SSH eingeben:

chown -R ftpuser:ftpgroup /data/ftp

Dies ist nur einmalig ntig.

Man sollte sich ggf. noch in die Dokumentation von chmod einlesen,
um die Rechte fr die Dateien entsprechend zu vergeben.


Arno Welzel
(privat@arnowelzel.de)


-------------------------------------------------------------------------------
nderungen gegenber OPT_PFTPD 0.7
-------------------------------------------------------------------------------

1) HTTP-Oberflche

Die HTTP-Oberflche wurde an die neue Oberflchengestaltung von FLI4L 3.0.0
angepasst und untersttzt derzeit die Sprache Deutsch (de) und Englisch (en).

Des weiteren wurden intern zahlreiche nderungen vorgenommen, um die
CGIs abzuspecken und an die neue Umgebung von FLI4L 3.0.0 anzupassen.

2) Anonymous FTP

Die untersttzung von anonymen Usern ber die Konfiguration wurde ausgebaut.
Sprich: Ohne Handarbeit werden keine anonymen Logins mehr untersttzt!

Dies dient sowohl zur Verbesserung der Sicherheit (ein "offener" FTP-Server
kann erhebliche Probleme schaffen, da sowas gerne von Dritten ausgenutzt
wird, um illegale Inhalte zu verbreiten!) und andererseits hat dies
Option bei meinen Tests auch nicht wirklich zuverlssig funktioniert.

Wer sich daran strt, dass er sich lokal bei FTP immer anmelden muss,
kann auch Clients verwenden, die das Passwort speichern knnen, wie z.B.
FileZilla (http://filezilla.sourceforge.net/). FileZilla beherrscht brigens
auch SCP (Dateibertragung ber SSH) - wer also OPT_PFTPD nur deswegen
einrichtet, weil er auf die Dateien seines FLI4L zugreifen will, soll
sich erst mal FileZilla oder WinSCP (http://winscp.net/) ansehen, bevor
er einen FTP-Server konfiguriert.

3) Warnung beim Zulassen von Systemusern

Die Option, auch Systemuser zuzulassen, bedeutet bei FLI4L faktisch, dass
jemand mit root-Login auf den gesamten Router zugreifen kann. Das sollte
nur als Notlsung verwendet werden, wenn man sonst keine andere Mglichkeit
hat - sftp oder scp (aus dem SSH-Paket von FLI4L) sind in der Regel
sinnvoller. Deshalb erscheint beim Aktivieren dieser Option eine entsprechende
Warnung beim Bauen der neuen Startdateien fr FLI4L.

-------------------------------------------------------------------------------
Konfiguration
-------------------------------------------------------------------------------

OPT_PFTPD

  Mit OPT_PFTPD='yes' wird das Paket aktiviert

PFTPD_PORT

  Der Port, auf dem der FTP-Server lauschen soll
  
  Standardeinstellung: PFTPD_PORT='21'

PFTPD_NUM_OF_CLIENTS  

  Anzahl der Clients, die sich gleichzeitig verbinden knnen
  
  Standardeinstellung: PFTPD_NUM_OF_CLIENTS='5'

PFTPD_MAX_CON_PER_IP

  Anzahl der Verbindungen, die von einer IP-Adresse aus maximal
  gleichzeitig hergestellt werden drfen.
  
  Standardeinstellung: PFTPD_MAX_CON_PER_IP='2'

PFTPD_TIMEOUT

  IDLE Zeit nach der man vom Server gekickt wird, d.h. die Zeit,
  die eine Verbindung ohne aktive Datenbertragung erhalten bleibt.
  
  Standardeinstellung: PFTPD_TIMEOUT='5'
  
PFTPD_AVOID_DNS

  Wenn PFTPD_AVOID_DNS='yes', wird nicht versucht, die IP-Adressen der
  Clients ber DNS in Namen aufzulsen.
  
  Standardeinstellung: PFTPD_AVOID_DNS='yes'

PFTPD_LIMIT

  Limit der maximal zulssigen Festplattenbelegung in %, bis zu dem
  ein Upload zugelassen wird (maximal 100, niedrigere Werte machen
  aber mehr Sinn).

  Standardeinstellung: PFTPD_LIMIT='95'
  
PFTPD_BANDWIDTH

  Bandbreite in kb/s fr Download und Upload fr jeden User im
  Format 'd:u', wobei d = Download und u = Upload. Soll kein Limit
  vorgegeben werden, lsst man die jeweilige Zahl leer. Soll
  sowohl Download wie auch Upload unbegrenzt mglich sein,
  lsst man die gesamte Variable leer (PFTPD_BANDWIDTH='').
  
  Die Angabe '40:15' wrde z.B. festlegen, dass man mit maximal
  40 kb/s zum Server Daten schicken kann und und mit maximal
  15 kb/s Daten vom Server herunterladen.

  Standardeinstellung: PFTPD_BANDWIDTH=':15'

PFTPD_LOG

  Ist PFTPD_LOG='yes', wird ein Logfile geschrieben.
  
  Standardeinstellung: PFTPD_LOG='yes'
  
PFTPD_LOG_FORMAT

  Hiermit wird das Format des Logfiles festgelegt, wahlweise
  clf, stats oder w3c. Genaueres siehe http://www.pureftpd.org/README
  
  Die nderung der Sortierung und Anzahl der angezeigten Zeilen
  in der HTTP-Oberflche ist derzeit nur beim Format 'stats' mglich.
    
  Standardeinstellung: PFTPD_LOG_FORMAT='stats'

PFTPD_LOG_PATH

  Gibt den vollstndigen Pfad und Namen der Logdatei an.
  
  WICHTIG: Man sollte daran denken, dass die Logdatei u.U. viel
  Platz braucht, wenn sie nicht regelmssig gelscht wird!
  Es empfiehlt sich der Einsatz eines logrotate-Verfahrens.

  Standardeinstellung: PFTPD_LOG_PATH='/var/log/pureftpd.log'

PFTPD_PASSWD_FILE

  Gibt den vollstndigen Pfad und Namen der Passwortdatei fr die virtuellen
  FTP-User an. Diese sollte auf einer Festplattenpartition liegen, damit
  nderungen zur Laufzeit ber die HTTP-Oberflche nicht verloren gehen.
  
  Standardeinstellung: PFTPD_PASSWD_FILE='/data/conf/pureftpd.passwd'

PFTPD_DEFAULT_FTP_PATH='/data/ftp'

  Hier wird das Standardverzeichnis fr FTP festgelegt. Dieses Verzeichnis
  muss existieren (ggf. manuell anlegen) und Zugriffsrechte fr ftpuser und
  ftpgroup enthalten. Nach dem ersten Neustart von FLI4L mit aktivem OPT_FTPD
  kann man das Verzeichnis wie folgt anlegen:
  
  mkdir /data/ftp
  chown -R ftpuser:ftpgroup /data/ftp
  
  Danach ist noch fr jeden User ein eigenes Unterverzeichnis sinnvoll,
  dass in der gleichen Weise angelegt wird.
  
  Standardeinstellung: PFTPD_DEFAULT_FTP_PATH='/data/ftp'
  
PFTPD_VUSER_N

  Anzahl der virtuellen FTP-User. Fr jeden User folgt dann ein Abschnitt mit
  Angabe von Usernamen, Passwort und dem lokalen Verzeichnis, auf das der
  User Zugriff haben soll.
  
  Es mssen keine User in der Konfiguration angelegt werden. Man kann diese
  auch erst spter in HTTP-Oberflche einrichten (dazu auch die Angabe
  PFTPD_PASSWD_FILE prfen!). Wenn man aber User aber bereits in der
  Konfiguration festlegt, mssen die Verzeichnisse der User existieren und
  die richtigen Rechte haben, damit sie sich verbinden knnen.
  
  Standardeinstellung: PFTPD_VUSER_N='0'
  
PFTPD_VUSER_x

  Username (Login) - bitte nur ASCII-Zeichen - also keine Leerzeichen,
  Umlaute etc.
  
PFTPD_VPASS_x

  Passwort

PFTPD_VDIR_x

  Verzeichnis fr den User - dieses Verzeichnis muss existieren und
  Zugriffsrechte fr ftpuser und ftpgroup haben. Am sinnvollsten legt
  man es unter /data/ftp/USERNAME an.
  
PFTPD_ALLOW_SYSTEM_USER

  Wenn PFTPD_ALLOW_SYSTEM_USER='yes', wird auch Systemusern der Zugriff
  via FTP erlaubt. Damit sollte mehr sehr vorsichtig sein, da man so auch
  root Zugriff gibt und damit potentiell auf den gesamten Router!
  
  Standardeinstellung: PFTPD_ALLOW_SYSTEM_USER='no'

OPT_PFTPD_CONTROL

  Wenn OPT_PFTPD_CONTROL='yes', wird die HTTP-Oberflche fr OPT_PFTPD
  eingerichet, ber die man im laufenden Betrieb FTP-User anlegen und
  lschen kann und Zugriff auf den aktuellen Status des FTP-Servers hat
  Vorraussetzung ist natrlich, dass der HTTP-Server von FLI4L ebenfalls
  aktiv ist (OPT_HTTPD='yes' in httpd.txt).
  
  Standardeinstellung: OPT_PFTPD_CONTROL='no'

PFTPD_EXPERT

  Wenn PFTPD_EXPERT='yes' werden _NUR_ die "Expert-Switches" verwendet
  und nicht die Angaben aus der Konfigurationsdatei.
  
  Normalerweise nicht ntig. Details zu den Switches siehe auch
  http://www.pureftpd.org
  
  Standardeinstellung: PFTPD_EXPERT='no'
  
PFTPD_EXPERT_SWITCHES

  Gibt die "Expert-Switches" an, falls PFTPD_EXPERT='yes'
  
  Standardeinstellung: PFTPD_EXPERT_SWITCHES=''


-------------------------------------------------------------------------------
FTP-Server von aussen erreichbar machen
-------------------------------------------------------------------------------

WARNUNG:

Das Anbieten eines Dienstes nach aussen kann eine potentielle Sicherheitslcke
schaffen! Bevor man diesen Schritt macht, sollte man unbedingt genau prfen,
dass kein Missbrauch mglich ist!

Ich bernehme keine Haftung fr eventuelle Schden!

Da der FTP-Server auf FLI4L selber luft, muss nur eine zustzliche
INPUT-Policy ergnzt werden, die den entsprechenden Port ffnet:

INPUT_LIST_x='tmpl:ftp ACCEPT'

Statt "x" gibt man die entsprechende Nummer an und passt INPUT_LIST_N ebenfalls
entsprechend an.


-------------------------------------------------------------------------------
HTTP-Oberflche
-------------------------------------------------------------------------------

Das HTTP-Oberflche erreicht man ber den Menpunkt "PureFTP" von FLI4L.

Die Oberflche ist in vier Bereiche aufgeteilt, die ber "Reiter" am oberen
Rand erreicht werden:


Steuerung - Steuerung des FTP-Servers
-------------------------------------

Hier sieht man, ob der Server luft und kann den Server stoppen bzw.
starten und die Bandbreiteneinstellung ndern.

Mchte man die maximal zulssige Bandbreite fr bertragungen begrenzen, gibt
man dazu im Feld "Upload/Download" die gewnschte Bandbreite in Kilobyte pro
Sekunde an. Das Format entspricht der Variablen PFTPD_BANDWIDTH aus der
Konfiguration.

WICHTIG: Diese Angabe wird nicht dauerhaft gespeichert und geht nach einem
Neustart von FLI4L verloren! Auch erfordert eine nderung der Bandbreite
einen Neustart des FTP-Servers!


Benutzer - Anlegen, ndern und lschen von FTP-Benutzern
--------------------------------------------------------

Auf dieser Seite kann man Benutzer hinzufgen oder ndern und vorhandene
Benutzer lschen.

Benutzer anlegen:

Um einen Benutzer hinzuzufgen, gibt man im Bereich
"Benutzer hinzufgen/ndern" den gewnschten Benutzernamen, das Passwort
inklusive Wiederholung und das Datenverzeichnis fr den Benutzer ein.

Wenn man mchte, kann das Datenverzeichnis auch automatisch erzeugt werden
(Option "Verzeichnis erzeugen"). Es ist aber auch mglich, bei mehreren
Benutzern das selbe Verzeichnis anzugeben.

Mit einem Klick auf "OK" wird der Benutzer angelegt und ggf. auch das
Verzeichnis erzeugt.

Passwort ndern:

Dazu gibt man im Bereich "Benutzer hinzufgen/ndern" den Benutzernamen an,
dessen Passwort gendert werden soll und das NEUE Passwort inklusive
Wiederholung und whlt die Option "Nur Passwort ndern".

Nach einem Klick auf "OK" wird dann das Passwort des angegebenen Users
gendert.

Benutzer lschen:

Hierzu gengt ein Klick auf "lschen" neben dem Benutzernamen im
unteren Abschnitt "Benutzer lschen".

WICHTIG: Benutzer werden ohne weitere Nachfrage gelscht! Das lokale
Verzeichnis wird aber nicht angerhrt, so dass die Dateien, die der
Benutzer hochgeladen hat, auch weiterhin vorhanden sind. Diese mssen ggf.
manuell ber SSH oder einen anderen FTP-User gelscht werden.

Man kann einen versehentlich gelschten Benutzer auch jederzeit wieder
hinzufgen und das alte Verzeichnis weiter verwenden.


Verbindungen - bersicht der aktuell aktiven Verbindungen
---------------------------------------------------------

Hier werden die alle aktiven Verbindungen ausgegeben. Mit einem Klick
auf "Aktualisieren" wird die Liste neu aufgebaut.

Die Spalten im Detail:

Aktion            Hier kann man mit einem Klick auf "beenden" die
                  zugehrige Verbindung trennen
             
PID               Prozess-ID des zur Verbindung gehrenden FTP-Prozesses

Benutzer          Name des Users, der die Verbindung aufgebaut hat

Time              Dauer der Verbindung in Sekunden

Status            "IDLE" oder "UL" fr Upload zum Server und "DL" fr Download
                  vom Server. Bei "UL"/"DL" wird zustzlich noch angegeben,
                  wieviel Prozent der gerade bertragenen Datei bearbeitet
                  wurden.

Geschwindigkeit   bertragungsgeschwindigkeit in Kilobyte pro Sekunde

Dateiname         Name der gerade bertragenen Datei

Entfernter Host   Name oder IP-Adresse des Computers, von dem aus die
                  Verbindung aufgebaut wurde

Aktuell Kb        Aktuell bertragene Datenmenge in Kilobyte

Total Kb          Gesamtdatenmenge in Kilobyte

Lokaler Host      Normalerweise die lokale IP-Adresse des FLI4L


Logdatei - Tabellarische Ausgabe des Logfiles
--------------------------------------------

In der Logdatei protokolliert PureFTP alle durchgefhrten bertragungen. Welche
Angaben im Detail vorhanden sind, hngt auch vom ausgewhlten Format ab
(PFTPD_LOG_FORMAT), siehe auch http://www.pureftpd.org/README.


-------------------------------------------------------------------------------
History
-------------------------------------------------------------------------------

3.0.4 - Einbindung der aktuellen Version 1.0.21 von PureFTP, die folgende
        nderungen beinhaltet (aus der Originalbeschreibung):

        "UTF-8 support and client-to-fs charset conversions are ready. Large
         files are supported by default, even on Linux through sendfile64().
         OPTS MLST and SITE UTIME commands have been implemented.

         One last thing: pure-ftpd 1.0.21 is probably the release with
         the best performance ever. Thanks to some network optimizations,
         there have been huge performance improvements while transfering
         a lot of small files."

3.0.3 - Anpassung an FLI4L 3.0.1 (Versionsprfung von FLI4L 3.0 statt 3.0.0)
      - Erweiterung Logfile-Anzeige bei Stats-Format um Sortierung und Umfang

3.0.2 - Binaries geSTRIPT, nachdem sie doch etwas arg gross waren

3.0.1 - Neue Binaries auf Basis von PureFTP 1.0.20 fr FLI4L 3.0.0 erstellt
        --without-inetd
        --with-puredb
        --with-throttling
        --with-ratios
        --with-ftpwho
        --with-altlog

3.0.0 - Paket an FLI4L 3.0.0 angepasst und berarbeitet
      - Bufix im Startscript fr den Aufruf durch die HTTP-Oberflche
      
0.8   - Paket an FLI4L 2.1.9 angepasst
      - anonymous ftp wieder ausgebaut (Sicherheit!)
      - Doku berarbeitet und erweitert
      - HTTP-Oberflche komplett berarbeitet (u.A. auch Vermeidung der
        zahlreichen Verwendung von temporren Dateien bei der Verarbeitung von
        URL-Parametern und Verwendung von proccgi)
      
0.7   - Man kann jetzt per httpd die Upload/Downloadbegrenzung ndern.
        laufende Sessions sind davon nicht betroffen, man kann diese aber killen.
      - Man kann den PFTPD jetzt per httpd starten und stoppen
        laufende Up/Downloads werden nicht abgebrochen.
      - Logs knnen jetzt im HTTPD angezeigt werden
      - Man kann sich jetzt auch mit den Systemusern aus /etc/passwd einloggen.

0.6   - Funktionen fr anonymous ftp hinzugefgt

0.5   - pure-ftpd neu compiliert (pftpd 1.0.12)
        --without-inetd
        --with-puredb
        --with-throttling
        --with-ratios
        --with-ftpwho
        --with-altlog
        CFLAGS: -O3 -fomit-frame-pointer -ffast-math -fexpensive-optimizations

      - Logfiles knnen nun geschrieben werden.

0.4   - Um sec-lib des httpd erweitert.
