ftpd(1M) ftpd(1M)
NAME
ftpd, in.ftpd - Server für Dateiübertragungsprotokolle
SYNTAX
in.ftpd [-B|-S] [-bdl] [-u maske] [-t zeitlimit] [-T maxzeitlimit]
[-F wert] [-N wert] [-W wert] rechner.port
BESCHREIBUNG
ftpd ist der Serverprozeß für das Internet File Transfer Protocol (FTP
- Internet-Dateiübertragungsprotokoll). Der Server wird von dem
Internet-Dämon inetd(1M) immer dann aufgerufen, wenn ein Verbindungs-
wunsch zum FTP-Dienst [siehe services(4)] empfangen wird. Dabei steht
als Verbindung Deskriptor 0 zur Verfügung. rechner.port sind Rechner-
name und Portnummer des anfordernden Prozesses.
OPTIONEN
-B Mit der Option -B wird die Umgebungsvariable LIBSOCKETBSD=YES
für das ftpd-Kommando gesetzt. Das heißt, es werden BSD-Sockets
benutzt.
-S Mit der Option -S wird die Umgebungsvariable LIBSOCKETBSD=NO für
das ftpd-Kommando gesetzt. Das heißt, es werden STREAMS-Sockets
benutzt.
Hinweis:
Die Option -B oder -S überlagert den aktuellen Wert von
LIBSOCKETBSD in der Shell-Umgebung. Ist weder -B noch -S
gesetzt, so wird das Verhalten durch die Einstellung von
LIBSOCKETBSD beim Start bestimmt.
-b Die Änderung der IP-Adresse des FTP-Clients mit dem PORT-Kommando
ist nicht mehr möglich. Dadurch kann die "ftp bounce attack" ver-
hindert werden. ftpd verhält sich dann aber nicht mehr RFC-kon-
form. Die Änderung des Ports auf dem Client ist nach wie vor mög-
lich.
-d Schaltet den Debug-Modus ein. Die Debug-Information wird an den
syslog-Dämon geschickt [siehe syslog(3C)].
-l Protokolliert jede FTP-Sitzung durch den syslog-Dämon.
-u maske
Setzt die Schutzbit-Maske für die Zugriffsrechte auf Dateien auf
maske. Die Schutzbit-Maske ist eine dreistellige Oktalzahl. Mit
ihr bestimmen Sie, welche Zugriffsrechte nicht vergeben werden
sollen [vgl. umask(1)]. Die Standardeinstellung für maske ist
027, also rw-r-----.
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98
ftpd(1M) ftpd(1M)
-t zeitlimit
Setzt das Zeitlimit bei Inaktivität auf den Wert zeitlimit in
Sekunden. Standardmäßig bricht der FTP-Server eine inaktive Sit-
zung nach einer Wartezeit von 15 Minuten ab.
-T maxzeitlimit
Setzt das maximale Zeitlimit bei Inaktivität, das von einem
Client gefordert werden kann, auf den Wert maxzeitlimit (in
Sekunden). Standardmäßig ist ein Wert von 2 Stunden festgelegt.
-F wert
wert bestimmt die Blockgröße für die Dateiübertragung. Das heißt,
die zu übertragende Datei wird in solchen Blöcken gelesen bzw.
geschrieben.
Es werden Werte zwischen 1 KB und 16 MB akzeptiert. Voreinstel-
lung ist 32 KB.
-N wert
wert bestimmt die Größe des ftp-internen Sende-/Empfangspuffers.
Es werden Werte zwischen 1 KB und 16 MB akzeptiert. Voreinstel-
lung ist 32 KB.
-W wert
wert wird als Socket-Option SOSNDBUF bzw. SORCVBUF für die
Datenübertragung verwendet.
Es werden Werte zwischen 4 KB und 384 MB akzeptiert. Voreinstel-
lung ist 24 KB.
Bei allen drei Optionen -F, -N und -W kann wert folgendermaßen
spezifiziert werden:
nk oder nK Der Wert wird als n Kilobyte interpretiert.
nm oder nM Der Wert wird als n Megabyte interpretiert.
n (nur Zahl) Der Wert wird als n Byte interpretiert.
Anforderungen
Der FTP-Server unterstützt aktuell die folgenden FTP-Kommandos; es
wird nicht nach Groß- und Kleinschreibung unterschieden.
ABOR vorheriges Kommando abbrechen
ACCT Konto angeben (ignoriert)
ALLO Speicher zuweisen (willkürlich)
APPE an eine Datei anhängen
Seite 2 Reliant UNIX 5.44 Gedruckt 11/98
ftpd(1M) ftpd(1M)
CDUP ins Vaterverzeichnis des aktuellen Arbeitsverzeichnisses
wechseln
CWD Arbeitsverzeichnis wechseln
DELE eine Datei löschen
HELP Hilfeinformationen anzeigen
LIST Listendateien in einem Verzeichnis anzeigen (ls -lg)
MKD Verzeichnis anlegen
MODE modus für Datenübertragung definieren
NLST Namensliste der Dateien in einem Verzeichnis anzeigen (ls)
NOOP keine Operation
PASS Paßwort angeben
PASV Server-zu-Server-Übertragung vorbereiten
PORT Datenverbindungsanschluß definieren
PWD aktuelles Arbeitsverzeichnis ausgeben
QUIT Sitzung beenden
RETR Datei abrufen
RMD Verzeichnis entfernen
RNFR alten Dateinamen zum Umbenennen angeben
RNTO neuen Dateinamen zum Umbenennen angeben
SITE Nicht-Standard-Kommandos ausführen
STOR Datei speichern
STOU Datei mit einem eindeutigen Namen speichern
STRU structure für Datenübertragung angeben
TYPE type für Datenübertragung angeben
USER Benutzernamen angeben
XCUP zum Vaterverzeichnis des aktuellen Arbeitsverzeichnisses
wechseln
Seite 3 Reliant UNIX 5.44 Gedruckt 11/98
ftpd(1M) ftpd(1M)
XCWD Arbeitsverzeichnis wechseln
XMKD Verzeichnis anlegen
XPWD aktuelles Arbeitsverzeichnis ausgeben
XRMD Verzeichnis entfernen
Die folgenden Nicht-Standard-Kommandos werden von SITE unterstützt:
UMASK Abfragen und Ändern der Schutzbit-Maske. Abfrage: SITE
UMASK. Ändern mit Angabe der neuen Schutzbit-Maske, z. B.
SITE UMASK 077.
IDLE Abfragen und Ändern des Zeitlimits bei Inaktivität, z. B.
SITE IDLE 60.
CHMOD Ändern der Zugriffsrechte einer Datei, z. B. SITE CHMOD 755
datei.
HELP Hilfeinformationen des SITE-Kommandos anzeigen, z. B. SITE
HELP.
Die übrigen FTP-Anforderungen, die in RFC 959 angegeben sind, werden
erkannt, sind aber nicht implementiert.
Der FTP-Server bricht eine aktive Dateiübertragung nur dann ab, wenn
dem Kommando ABOR ein Telnet-"Interrupt Process"-(IP)-Signal und ein
Telnet-"Synch"-Signal im Telnet-Datenstrom des Kommandos vorausgehen,
wie in RFC 959 beschrieben.
ftpd interpretiert Dateinamen entsprechend den Konventionen von sh(1).
Daher können Benutzer die folgenden Metazeichen verwenden: *, ?, [, ],
{, } und ~.
ftpd überprüft Benutzer nach vier Regeln:
1) Der Benutzername muß in der Paßwortdatenbank /etc/passwd enthalten
sein, und das Paßwort darf nicht Null sein. Ist dies der Fall, muß
der Client ein Paßwort angeben, ehe Datei-Operationen durchgeführt
werden können.
2) Erscheint der Benutzername in der Datei /etc/ftpusers, wird der
ftp-Zugriff verweigert.
3) Der ftp-Zugriff wird nur dann gewährt, wenn die Shell des Benutzers
(aus /etc/passwd) in der Datei /etc/shells aufgeführt ist oder wenn
die Benutzer-Shell zur folgenden Gruppe gehört:
Seite 4 Reliant UNIX 5.44 Gedruckt 11/98
ftpd(1M) ftpd(1M)
/bin/sh
/bin/ksh
/bin/csh
/usr/bin/sh
/usr/bin/ksh
/usr/bin/csh
4) Ist der Benutzername "anonymous" oder "ftp", muß die Paßwortdatei
(Benutzer "ftp") eine anonyme FTP-Benutzerkennung enthalten. In
diesem Fall darf sich der Benutzer mit einem beliebigen Paßwort
anmelden (dieses wird laut der Konvention als Name des Client-Rech-
ners angegeben).
Im letzten Fall ergreift ftpd besondere Maßnahmen, um die Zugriffs-
rechte des zugreifenden Benutzers einzuschränken. Der Server führt ein
Kommando chroot(1M) für das Home-Verzeichnis des Benutzers "ftp" aus.
Um die Systemsicherheit zu wahren, muß der Teilbaum "ftp" mit besonde-
rer Umsicht aufgebaut werden; dazu werden folgende Regeln empfohlen:
$HOME
Sollte ftp zum Eigentümer des Home-Verzeichnisses haben; niemand
anders darf Schreibberechtigung dafür haben.
$HOME/bin
Sollte den Superuser zum Eigentümer dieses Verzeichnisses machen,
für das dann niemand anders Schreibberechtigung hat. Das Kommando
ls(1), das die Listenkommandos unterstützt, muß vorhanden sein.
Es muß Zugriffsrecht 111 haben.
$HOME/etc
Sollte den Superuser zum Eigentümer dieses Verzeichnisses machen,
für das niemand sonst Schreibberechtigung hat. Kopien der Dateien
passwd(4), group(4) und netconfig(4) müssen vorhanden sein, damit
das Kommando ls ordnungsgemäß ausgeführt werden kann. Diese
Dateien müssen das Zugriffsrecht 444 haben.
$HOME/pub
Gibt diesem Verzeichnis das Zugriffsrecht 777 und macht ftp zum
Eigentümer. Benutzer sollten Dateien, die über die anonyme Benut-
zerkennung verfügbar sein sollen, in dieses Verzeichnis ablegen.
$HOME/dev
Macht den Superuser zum Eigentümer dieses Verzeichnisses, für das
niemand sonst Schreibberechtigung hat. In dieses Verzeichnis
wechseln und folgendes eingeben:
FTP="`grep '^ftp:' /etc/passwd | cut -d: -f6`"
MAJORMINOR="`ls -l /dev/tcp | awk '{ gsub(/,/, \" \"); \
print $5, $6}'`"
mknod $FTP/dev/tcp c $MAJORMINOR
chmod 666 $FTP/dev/tcp
Seite 5 Reliant UNIX 5.44 Gedruckt 11/98
ftpd(1M) ftpd(1M)
$HOME/usr/lib
Dieses Verzeichnis sollte den Systemverwalter (root) als Eigentü-
mer haben und für niemand anderen schreibbar sein. Die Bibliothek
libc.so.1 (aus /usr/lib) muß vorhanden sein, um die Kommandos zur
Ausgabe von Listen zu unterstützen. Für dieses Programm sollten
die Zugriffsrechte auf 555 (r-xr-xr-x) gesetzt sein.
$HOME/dev/zero
Dieses Verzeichnis sollte den Systemverwalter als Eigentümer
haben und nicht für andere Benutzer schreibbar sein. Das Gerät
zero muß vorhanden sein, um die Kommandos zur Ausgaben von Listen
zu unterstützen. Auch dieses Gerät muß root als Eigentümer und
die Zugriffsrechte 666 (rw-rw-rw-) haben. Seine Gerätetreibernum-
mern können ermittelt werden mit ls -l /dev/zero.
HINWEISE
Die anonyme FTP-Benutzerkennung birgt Gefahren in sich und sollte
daher nach Möglichkeit nicht angelegt werden.
Der Server muß als Superuser arbeiten, um Socket-Schnittstellen mit
privilegierten Anschlußnummern erstellen zu können. Er behält eine
effektive Benutzernummer des angemeldeten Benutzers bei und greift nur
auf den Superuser zurück, um Adressen an Socket-Schnittstellen zu bin-
den. Mögliche Sicherheitslücken wurden eingehend untersucht, können
aber möglicherweise noch immer bestehen.
/etc/ftpusers enthält eine Liste der Benutzer, die nicht auf das
System zugreifen dürfen; die Datei gibt einen Benutzernamen pro Zeile
an.
SIEHE AUCH
ftp(1), inetd(1M), getsockopt(3N), group(4), netconfig(4), passwd(4),
services(4).
Postel, Jon und Joyce Reynolds, File Transfer Protocol (FTP), RFC 959,
Network Information Center, SRI International, Menlo Park, Calif.,
October 1985.
Seite 6 Reliant UNIX 5.44 Gedruckt 11/98