Secure Shell - Passwortfreies Login Linux im Netzwerk Neuigkeiten Inhalt Index


File Transfer

Das Kommando ftp dient der Übertragung von Daten von einem Internetrechner zu einem anderen. Die Besonderheit des zugehörigen Protokolls liegt in den getrennten Kanälen für die Daten und die Steuerung (Abbildung) sowie in der Datenübertragung ohne Verwendung eines Spoolers.

Im RFC 959 ist für FTP TCP-Port 20 als Steuerungskanal und TCP-Port 21 als Datenkanal festgelegt. FTP verwendet als Transportprotokoll immer TCP, da dieses bereits Vorkehrungen für einen sicheren Datentransfer enthält und FTP sich darum nicht zu kümmern braucht.

File Transfer

Abbildung: File Transfer Protokoll


Einrichtung des Servers

Per Voreinstellung sollte das Paket bereits installiert sein: In den Dateien /etc/inetd.conf und /etc/services müssen die entsprechenden Einträge vorhanden sein:

user@sonne> less /etc/inetd.conf
...
# Option -a bewirkt die Auswertung der Datei /etc/ftpaccess
#
ftp stream tcp nowait root /usr/sbin/tcpd wu.ftpd -a
...
user@sonne> less /etc/services
...
ftp 21/tcp
...

Beeinflusst wird die Arbeit des FTP-Servers durch drei (vier) Dateien:

Die mit dem Paket installierten Dateien sollten in den meisten Fällen den Ansprüchen genügen. Auf Client-Seite ist keinerlei Konfiguration notwendig. Eine kleine Beispielsitzung soll die Installation testen:

user@sonne> ftp sonne
Connected to sonne.galaxis.de.
220 sonnegalaxis.de FTP server (Version wu-2.4.2-academ[BETA-18](1) Fri Dec 11 19:58:25 /etc/localtime 1998) ready.
Name (sonne:user):
331 Password required for user.
Password:
230 User user logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/home/user" is current directory.
ftp> ?
Commands may be abbreviated. Commands are:

! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
ftp> cd /usr/local
250 CWD command successful.
ftp> ls
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 10
drwxr-xr-x   10  root   root     1024  Feb 15 15:52  .
drwxr-xr-x   23  root   root     1024  Feb 15 15:54  ..
drwxr-xr-x    2  root   root     1024  Feb 15 15:48  bin
drwxr-xr-x    7  root   root     1024  Apr 20 13:15  ftp
drwxr-xr-x    6  root   root     1024  Dec 12 01:20  httpd
drwxr-xr-x    4  root   root     1024  Feb 15 15:52  httpsd
drwxr-xr-x    2  root   root     1024  Feb 15 15:48  include
drwxr-xr-x    2  root   root     1024  Feb 15 15:05  info
drwxr-xr-x    2  root   root     1024  Feb 15 15:48  lib
drwxr-xr-x   12  root   root     1024  Apr 19 08:47  man
226 Transfer complete.
ftp> bye
221 Goodbye.

Der einfachste Weg um anonymes FTP zuzulassen (Nutzerkennzeichen ftp oder anonymous), ist unter SuSE die Installation des Paketes ftpdir aus der Serie n. Die Schritte zur Realisierung per Hand sollen hier in knapper Form abgehandelt werden.

  1. In der /etc/passwd muss ein Account unter dem Kennzeichen ftp existieren:

    root@sonne> less /etc/passwd | grep ftp
    ftp:x:40:2:ftp account:/usr/local/ftp:/bin/bash

    Das eingetragene Homeverzeichnis ist gleichzeitig die Basis für die anzulegenden Dateien und Verzeichnisse.

  2. Im FTP-Basisverzeichnis sind folgende Unterverzeichnisse mit den angegebenen Rechten zu erzeugen:

    root@sonne> ls -l /usr/local/ftp
    total 7
    drwxr-xr-x   2  root   root     1024  Apr 20 15:00  bin
    drwxr-xr-x   2  root   root     1024  Apr 20 15:00  dev
    drwxr-xr-x   2  root   root     1024  Apr 20 15:00  etc
    drwxr-xr-x   2  root   root     1024  Apr 20 15:00  lib
    drwxr-xr-x   2  root   root     1024  Apr 20 15:00  msgs
    drwxr-xr-x   2  root   root     1024  Apr 20 15:00  pub
    drwxr-xr-x   3  root   root     1024  Apr 20 15:00 usr
  3. Ins Unterverzeichnis ./bin sind die Programme compress, ls und tar zu installieren. Diese Programme werden vom FTP-Dämonen benötigt (minimal reicht bereits ls). Achtung: Es werden die statisch gelinkten Versionen der Kommandos benötigt:

    root@sonne> file ls
    ls: ELF 32-bit LSB executable, Intel 80386, version 1,
    statically linked, stripped
  4. Im Unterverzeichnis ./etc müssen die Dateien passwd und group mit den Rechten 644 erzeugt werden:

    root@sonne> vim etc/passwd
    root:x:0:0:Super User:/root:/bin/bash

    root@sonne> vim etc/group
    root:x:0:root
    users:x:100:root

    Das Kommando ls zeigt anhand dieser Dateien die Zuordnung der UIDs und GIDs für die gespeicherten Dateien an.

  5. Das Verzeichnis ./lib bleibt in den meisten Fällen leer. Sollten im Verzeichnis ./bin dynamisch gelinkte Programme installiert werden, müssen alle von diesen benötigten shared-object- Bibliotheken hier zu finden sein.
  6. In ./msgs existieren die beiden Dateien msg.dead und welcome.msg, deren Inhalte bei fehlgeschlagenem Login bzw. als Begrüßung angezeigt werden.
  7. Das Verzeichnis ./pub ist normalerweise die Wurzel für alle Daten, die per FTP der Welt zugänglich gemacht werden.
  8. Das Verzeichnis ./usr enthält ein Unterverzeichnis bin mit den beiden Kommandos ls und gzip. Dieses kann aber auch entfallen.

Neben FTP existiert ein weiteres Datentransfer-Protokoll mit minimalen Anforderungen: Trivial File Transfer Protocol. Im Unterschied zum FTP verwendet TFTP das User Datagram Protocol (UDP) zum Transport der Daten.

Als Folge daraus muss das Protokoll sich selbst um Sicherungsfunktionen kümmern. Auch entfällt das Einloggen auf dem Server, so dass TFTP serverseitig starken Restriktionen unterworfen ist (nur für "weltweit" lesbare und schreibbare Dateien). Einsatzgebiet von TFTP ist das Bootstrapping plattenloser Rechner, da die hierfür notwendigen Daten (Netzwerktreiber, IP, UDP, das Protokoll selbst) in einem EEPROM Platz finden.


Secure Shell - Passwortfreies Login Linux im Netzwerk Neuigkeiten Inhalt Index