ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

ProFTPD

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Einleitung

ProFTPD ist ein weit verbreiteter FTP-Server für UNIX-Plattformen.

Installation

Der ProFTPD ist in den Ubuntuquellen enthalten und kann daher ganz normal installiert [1] werden. Folgendes Paket ist erforderlich:

  • proftpd (universe, [2])

  • proftpd-basic (ProFTPd)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install proftpd-basic 

sudo aptitude install proftpd-basic 

Ab 11.10 Oneiric Ocelot

Ab Oneiric wird man während der Installation gefragt, ob man "Servermodus" oder "von Inetd" installieren möchte. Ersteres wird empfohlen, wenn viel, letzteres, wenn wenig FTP-Verkehr erwartet wird, da letzterer Modus "resourcenschonender" sei.

Ferner besteht die Möglichkeit, folgende Erweiterungen gleich mit zu installieren:

  • openbsd-inetd - OpenBSD-internet-Superserver

  • proftpd.doc - Dokumentation

  • proftpd-mod-ldap - Daemon-LDAP-Modul

  • proftpd-mod-mysql - Daemon-MySQL-Modul

  • proftpd-mod-odbc - Daemon-ODBCL-Modul

  • proftpd-mod-pgsql - Daemon-PostgesSQL-Modul

  • proftpd-mod-sqlite - Daemon-SQLite3-Modul

Konfiguration

Mit dem ProFTPD wird schon eine sehr gut kommentierte Konfigurationsdatei /etc/proftpd/proftpd.conf mitinstalliert, die man dann gegebenenfalls nur anpassen [4] muss.

Einen Anonymous-FTP-Zugang einrichten

Oft möchte man einen FTP-Server als Download-Server für die Öffentlichkeit betreiben. Die Benutzer sollen in diesem Fall anonym zugreifen können. Dafür muss folgender Abschnitt am Ende der Konfigurationsdatei angehängt werden. Dabei haben alle Benutzer Leserechte für den Ordner /home/ftp/, jedoch keine Schreibrechte:

<Anonymous ~ftp>
  User                        nobody
  Group                       nogroup
  UserAlias                   anonymous ftp
  DirFakeUser on ftp
  DirFakeGroup on ftp
  RequireValidShell           off
  MaxClients                  10
  DisplayLogin                welcome.msg
  DisplayChdir           .message
  <Directory *>
    <Limit WRITE>
      DenyAll
    </Limit>
  </Directory>
</Anonymous>

Dem Ordner /home/ftp/ müssen natürlich auch die benötigten Zugangsrechte gegeben werden [3]:

sudo chmod 755 -R /home/ftp/ 

Virtuelle User verwenden

Wenn man den nicht-anonymen Benutzern nur den FTP-Zugang gestatten will, aber nicht die Nutzung anderer Dienste wie SSH, ist es sinnvoll, die Benutzer über eine Textdatei zu verwalten, anstatt sie als Systemuser zu erstellen. Das nennt man virtuelle User, denn in Wirklichkeit existieren die Benutzer ja nicht.

Dazu müssen in der Datei /etc/proftpd/proftpd.conf folgende Zeilen stehen [4]

DefaultRoot ~
AuthOrder                      mod_auth_file.c  mod_auth_unix.c
AuthUserFile /etc/proftpd/ftpd.passwd
AuthPAM off
RequireValidShell off 

Nun wechselt man in das Verzeichnis /etc/proftpd/ und legt einen neuen Benutzer mittels

ftpasswd --passwd --name benutzername --uid 1001 --home /pfad/zum/userdir --shell /bin/false 

an.

Als UID muss man natürlich eine gültige, numerische Benutzer-ID verwenden, unter der der Benutzer auf dem System agieren soll. Man kann entweder für jeden dieser virtuellen Benutzer einen eigenen Linux-Benutzerzugang anlegen, oder mehrere virtuelle teilen sich einen. Die Direktive DefaultRoot ~ verhindert auch in diesem Fall, dass die Benutzer auf die Homeverzeichnisse der anderen zugreifen können, sofern sie sich das nicht auch noch teilen sollen (sinnvoll bspw. bei Webmaster-Teams).

Tipp: Im Falle einer Installation des Apache-Webservers wäre es sinnvoll, den erstellten Benutzern die UID des Benutzer www-data (Befehl: id www-data) zu geben, da die Nutzer dann Lese-, Schreib- und Ausführungsrechte im /var/www hätten, ohne dass man über andere umständliche und unsichere Wege zur Lösung kommen muss. Vorsicht Sicherheitslücke da Apache auch über die rechte der Gruppe www-data läuft!

ProFTPD neu starten

Nachdem nun alle gewünschten Änderungen vorgenommen sind, und die Datei gespeichert ist, muss der ProFTP-Daemon noch einmal neu gestartet werden. Wenn der ProFTPD wie standardmäßig voreingestellt über inetd (Einstellung ServerType in der Konfigurationsdatei) läuft, dann muss der "Internet SuperServer" neu gestartet werden.

Voraussetzung, dass sich der FTP-Server via Internet SuperServer starten bzw. neustarten lässt, ist ein Eintrag in /etc/inetd.conf [4]:

ftp     stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/proftpd

Der Neustart geschieht im Terminal [3] mit

sudo /etc/init.d/inetd restart 

Sollte der FTP-Server im "standalone"-Typ laufen, genügt ein:

sudo /etc/init.d/proftpd restart 

Mehr zum Thema Starten uns Stoppen von Diensten findet sich im Wiki unter Dienste.

./gproftpd.png

Grafische Bedienoberfläche

Es gibt auch eine grafische Oberfläche, mit der man den Server konfigurieren kann. Diese lässt sich über die Paketverwaltung mit dem Paket

  • gadmin-proftpd

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install gadmin-proftpd 

sudo aptitude install gadmin-proftpd 

installieren. So erhält man eine komplette grafische Oberfläche für ProFTPD, in der sich auch direkt Einträge in die ProFTPD.conf erstellen lassen.

Beispielkonfiguration

Diese Konfiguration soll folgenden Service anbieten:

  • FTP Service wird von inetd gestartet und läuft auf dem Standard-Port 21

  • Kein FTP-Login für Benutzer root erlaubt

  • Login für Benutzer anonymous erlaubt, greift auf das Verzeichnis /home/ftp zu

  • Login für eingerichtete Benutzer, die auf ihr Homeverzeichnis zugreifen

  • Datentransfer geschieht automatisch im "binary"-Mode

/etc/ProFTPD.conf

/etc/proftpd/proftpd.conf (Maverick)

# (C) www.ProFTPD.de
ServerName "192.168.0.1"
ServerType inetd
DefaultServer on

# Port 21 is the standard FTP port.
Port 21

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# Note that this ONLY works in standalone mode
MaxInstances 30

# Set the user and group under which the server will run.

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

 # Normally, we want files to be overwriteable.

AllowOverwrite on

<Anonymous ~ftp>
  User                        ftp
  Group                       nogroup
  UserAlias                   anonymous ftp
  DirFakeUser on ftp
  DirFakeGroup on ftp
  RequireValidShell           off
  MaxClients                  10
  DisplayLogin                welcome.msg
  DisplayFirstChdir           .message
  <Directory *>
    <Limit WRITE>
      DenyAll
    </Limit>
  </Directory>
</Anonymous>

<Global>
DefaultTransferMode binary
RootLogin off
</Global>

Problemlösungen

Bei Ubuntu 12.04 wird Version 1.3.4a von ProFTPD mitgeliefert. Diese enthält einen bekannten Bug, der bei Verwendung von "DirFakeUser off" oder "DirFakeGroup off" in der proftpd.conf die Verbindung trennt, sobald das Kommando "MLSD" oder "MLST" aufgerufen wird (was z.B. FileZilla macht). Als Workaround sollte man die beiden "Fake"-Anweisungen auskommentieren.

ubuntuusers.local › WikiProFTPD