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