Der FTP-Server nimmt Aufträge von FTP-Clients am lokalen Netz entgegen und führt sie aus.
Voraussetzung für die Benutzung des FTP-Servers an einem BS2000-Partner-Rechner ist, dass vom Systembetreuer der FTP-Server hochgefahren wurde.
In der Folge wird der Rechner mit dem FTP-Server als ferner Rechner bezeichnet, damit die Server-Beschreibung mit der Client-Beschreibung konsistent ist (obwohl, vom Standpunkt des Servers betrachtet, der lokale Rechner sein eigener ist).
Arbeitsweise
Für jeden Verbindungswunsch eines Client (Kommando open) erzeugt der Server eine eigene BS2000-Task. Die dazu benötigten Daten (Benutzerkennung, Abrechnungsnummer, Passwort) werden vom Client angefordert. Danach wird ein Programm (FTPDC) gestartet, das den eigentlichen Dateitransfer und die vom Client angestoßenen lokalen Dateizugriffe durchführt. Die DMS-Zugriffsrechte des BS2000 (RDPASS, WRPASS, EXPASS, SHARE=YES|NO, ACCESS=READ|WRITE) werden dabei vollständig beachtet; ebenso die Zugriffsrechte von POSIX.
Wenn sich mehrere Clients zum exakt gleichen Zeitpunkt am Server anmelden, kann es zur Ablehnung des Verbindungswunsches kommen. In diesem Fall muss der Client den Verbindungsaufbau wiederholen.
Passwortschutz
Im BS2000 können einzelne DVS-Dateien durch Passwörter geschützt sein. Der BS2000-FTP-Server erwartet Funktionsaufrufe mit Dateinamen in der Form
dateiname,C'passwort' oder dateiname,X'passwort'.
Dies gilt nicht für das POSIX-Dateisystem.
Beispiel
Von einem Unix-System aus (Dateiname ZWATON) soll die mit dem Lese-Passwort OTTO geschützte BS2000-Datei ANTON überschrieben werden:
put ZWATON ANTON,C'OTTO'
Dateien, die mit unterschiedlichen Passwörtern geschützt sind (z.B. RDPASS=C'OTTO' und WRPASS=C'KARL'), können nicht direkt angesprochen werden. Es muss zumindest eines der beiden Passwörter mit der Funktion site exec des Kommandos quote vorher eingegeben werden:
quote site exec PASSWORD C'KARL'
quote site exec darf nur verwendet werden,
wenn der FTP-Zugang nicht mit FTAC kontrolliert wird bzw.
wenn es nicht mithilfe der Server-Option -disableSiteExecCommand deaktiviert wurde (siehe Handbuch „interNet Services Administratorhandbuch“).
PASSIVE-Modus
Der PASSIVE-Modus erlaubt es, von einem Client aus eine Datenübertragung zwischen zwei Servern zu initiieren. Der FTP-Client im BS2000 unterstützt dieses Verfahren durch das Client-Kommando proxy (siehe "proxy - Verbindung zu zwei fernen Rechnern steuern").
Im BS2000-FTP-Server wird diese Funktionalität durch die Server-Kommandos PASV bzw. EPSV unterstützt. Im BS2000-FTP-Client kann der PASSIVE-Modus durch das Client-Kommando passive (siehe "passive - PASSIVE-Modus ein-/ausschalten") eingestellt werden.
Im PASSIVE-Modus wird der Server veranlasst, an einem Datenport einen Verbindungswunsch zu erwarten, anstatt selbst aktiv eine Verbindung aufzubauen. Der Verbindungsaufbau zwischen den beiden Server-Tasks erfolgt über die erste generierte Leitungsadresse. Falls über diese Leitung keine Verbindung zwischen den beiden Servern möglich ist, wird der Verbindungswunsch abgelehnt (Returncode 425, can’t build data connection).
Der PASSIVE-Modus wird außerdem verwendet, wenn auf einen FTP-Server hinter einer Firewall zugegriffen werden soll, da vom Server ausgehende Verbindungen oft Konflikte mit den Firewall-Regeln verursachen. Angesichts dessen nutzen viele Clients standardmäßig den PASSIVE-Modus.
Umfang der Implementierung
Die Funktionen eines FTP-Servers sind in genormten Protokollelementen (Serverkommandos) realisiert.
Die folgende Tabelle enthält eine Übersicht über die Funktionen des FTP-Servers im BS2000.
Serverkommando | Server-Funktion | Im Server auf | Korrespondierendes | |
(DVS) | (POSIX) | |||
acct | Abrechnungsnummer bekannt geben | + | + | |
abor | Dateiübertragung abbrechen | + | + | |
allo | Speicher zuweisen | (+) | (+) | |
appe | Datei an eine bestehende Datei anhängen | + | + | append (a) |
auth | TLS/SSL-Verbindung initiieren | + | + | open (a) |
ccc | TLS-Absicherung der Kontrollverbindung ausschalten | + | + | ccc (a) |
cdup | Wechsel in das nächsthöhere ADV (POSIX) bzw. Entfernen der Teilqualifizierungsstufe (DVS) | +(1) | + | cdup (a) |
cmod | 1:1-Übertragung einschalten | + | + | copymode(k) |
cwd | Arbeits-Dateiverzeichnis wechseln (POSIX) bzw. Teilqualifizierung ändern (DVS) | + | + | cd (a) |
dele | Eine Datei löschen | + | + | delete (a) |
eprt | extended port command für IPv6 | + | + | |
epsv | extended passive command für IPv6 | + | + | |
feat | Neue Features des Servers anzeigen | + | + | |
help | Hilfe anfordern | + | + | |
list | Dateiverzeichnisse und Dateinamen auflisten | + | + | dir (a) |
mdtm | Datum und Uhrzeit der bislang letzten Änderung einer Datei ausgeben | + | + | |
mkd | Dateiverzeichnis einrichten | - | + | |
mlsd | Dateinamen und -eigenschaften auflisten | + | + | mlsd (a) |
mlst | Dateieigenschaften auflisten | + | + | mlst (a) |
mode | Übertragungsmodus definieren | + | + | mode (a,k) |
nlst | Dateinamen auflisten | + | + | ls (a) |
noop | nichts tun | + | + | |
opts | Optionen angeben | + | + | |
pass | Passwort bekannt geben | + | + | |
pasv | PASSIVE-Modus einstellen | + | + | |
pbsz | Speicher für Datenverschlüsselung zuweisen | (+) | (+) | private (a) |
port | Datenverbindungs-Port definieren | + | + | |
prot | Verschlüsselung der Datenverbindung aktivieren/deaktivieren | + | + | private (a) |
pwd | Aktuelles Arbeits-Dateiverzeichnis ausgeben | + | + | pwd (a) |
quit | Sitzung beenden | + | + | close (a) |
rest | Datei-Position spezifizieren, an der ein Datentransfer aufsetzen soll | + | + | reget (a) |
retr | Eine Datei wiedererlangen | + | + | get (a) |
rmd | Dateiverzeichnis löschen | - | + | |
rnfr | Eine Datei umbenennen: alten Namen angeben | + | + | rename (a) |
rnto | Eine Datei umbenennen: neuen Namen angeben | + | + | rename (a) |
site | Präfix für BS2000-spezifische Funktionen des FTP-Servers | + | + | |
size | Größe einer Datei ausgeben | + | + | |
stat | Server-Status-Informationen ausgeben | + | + | status (k) |
stor | Eine Datei abspeichern | + | + | put (a) |
stou | Eindeutiges Speichern von Dateien | + | + | put (a) |
stru | Übertragungsstruktur definieren | + | + | struct (a+k) |
syst | Systeminformation über den Server | + | + | system (a) |
type | Übertragungs-Typ definieren | + | + | type (a+k) |
user | Benutzer-Name definieren | + | + | user (a) |
xcup | Wechsel in das nächsthöhere ADV (POSIX) bzw. Entfernen der Teilqualifizierungsstufe (DVS) | +(1) | + | |
xcwd | Arbeits-Dateiverzeichnis wechseln (POSIX) bzw. Teilqualifizierung ändern (DVS) | + | + | |
xmkd | Dateiverzeichnis einrichten | - | + | mkdir (a) |
xpwd | Aktuelles Arbeits-Dateiverzeichnis ausgeben | + | + | pwd (a) |
xrmd | Dateiverzeichnis löschen | - | + | rmdir (a) |
Legende
ADV | Arbeits-Dateiverzeichnis |
(1)cdup und xcup erfüllen im BS2000-Server die Funktion „Ändern des Arbeits-Dateiverzeichnisses (ADV)“ durch Entfernen einer Teilqualifizierungsstufe.
BS2000-spezifische Funktionen des FTP-Servers
Die folgende Tabelle gibt einen Überblick über die BS2000-spezifischen Funktionen des FTP-Servers.
Serverkommando | Server-Funktion | Im Server auf | Korrespondierendes Client-Kommando | |
cmod | 1:1-Übertragung einschalten | + | + | copymode (k) |
exec | Kommando an fernes Betriebssystem reichen | + | + | |
file | DVS-Dateiattribute wechseln | + | + | file (k) |
ftyp | Dateibearbeitungstyp wechseln | + | + | ftyp (k) |
help | Information zu FTP-Kommandos | + | + | help (k) |
modc | Zeichenkette (String) für Wechsel POSIX / DVS ändern | + | + | modchar (k) |
setc | Code-Tabellen wechseln | + | + | setcode (k) |
sfil | Spezielle EOF-Marker für PAM-Dateien ein-/ausschalten; | + | (+) | setfile (k) |
sopt | Setzen von Variablen, die Serververhalten steuern | + | + | set (k) |
svfs | TVFS aktivieren/deaktivieren | + | + | |
trce | Ein-/Ausschalten Debug-Ausgabe und Socket-Trace | + | + | debug (k) / trace (k) |
exit | Parameter für Exit-Routinen definieren | + | + | rexit (a) |
Legende
+ | Die Funktion ist realisiert. |
Es empfiehlt sich, die BS2000-spezifischen Funktionen des FTP-Servers immer mit dem Präfix site aufzurufen, obwohl aus Kompatibilitätsgründen vorerst noch bei den Kommandos file, ftyp, modc und setc auch die Verwendung ohne vorangesetztes site möglich ist.
Insbesondere beim Erstellen von Prozeduren wird aber dringend empfohlen, immer die aktuelle Form mit vorangesetztem site zu verwenden, um Problemen vorzubeugen, die eventuell bei Erweiterung des FTP-Standards auftreten können.
Folgt auf site keines der in der Tabelle genannten Kommandos, so wird site in der Bedeutung von site exec interpretiert. Die auf site folgende Zeichenkette wird dann als Kommando an das ferne Betriebssystem gereicht und wird wie in früheren FTP-Server-Versionen interpretiert.
Aufruf der FTP-Server-Funktionen durch den FTP-Client des Partnerrechners
Für die meisten Funktionen des FTP-Servers gibt es einen Kommando-Aufruf im Client des Partnerrechners. Für Funktionen ohne einen entsprechenden Kommando-Aufruf im Client kann mit dem Client-Kommando quote (siehe Abschnitt „quote - Aufruf von Server-Funktionen“) die Funktion direkt über den FTP-Server aufgerufen werden.
Für FTP-Clients, die keine spezielle Eingabemöglichkeit für eine Abrechnungsnummer anbieten (z.B. Webbrowser), kann beim BS2000-FTP-Server eine Abrechnungsnummer, durch ein Komma getrennt, an die Benutzerkennung angehängt werden.
Die Funktionen "Einrichten eines Dateiverzeichnisses" und "Löschen eines Dateiverzeichnisses" finden im DVS-Dateisystem des BS2000 keine sinnvolle Entsprechung. Für das POSIX-Dateisystem des BS2000 sind diese Funktionen im Rahmen der POSIX-Unterstützung realisiert. Über die FTP-Client-Kommandos mkdir und rmdir können Dateiverzeichnisse im POSIX-Dateisystem eingerichtet und gelöscht werden.
Grundsätzlich kann jede Server-Funktion des Partnerrechners mit dem Client-Kommando quote aufgerufen werden.
Im Folgenden werden die Server-Funktionen file, ftyp, modc, setc, sfil, svfs, cmod und exit näher behandelt, da diese Funktionen nur im BS2000-FTP-Server existieren und immer über das Client-Kommando quote angesprochen werden müssen.
Die Funktion site exit legt die Parameter für die Exit-Routinen fest (siehe Handbuch „interNet Services Administratorhandbuch“). Das exit-Kommando können Sie auch über das Client-Kommando rexit zum Server schicken (siehe "rexit - Parameter für ferne Exit-Routine definieren").
Einzugeben ist:quote site exit receive:<recv-parm>
quote site exit send:<send-parm>
quote site exit receive:<recv-parm>!send:<send-parm>
z.B.: quote site exit receive:-C5!send:-D7
quote site exit send:*NONEDie Funktion site file legt die Datei-Attribute einer zu übertragenden DVS-Datei am fernen Rechner (jener Rechner, auf dem der FTP-Server läuft) fest. Die Funktion file entspricht dem Client-Kommando file, das auf "file - Attribute einer Datei am lokalen Rechner festlegen" detailliert beschrieben ist. Einzugeben ist:
quote site file <ferne-datei,file-operandenliste>
z.B.: quote site file datei1,fcbtype=samDie Funktion site ftyp legt fest, ob die SAM-Dateien am fernen Rechner als Text- oder Binär-Dateien bearbeitet werden sollen. Die Funktion ftyp entspricht dem Client-Kommando ftyp, das auf "ftyp - Bearbeitungstyp für Dateien am lokalen Rechner festlegen" detailliert beschrieben ist.
Einzugeben ist:
quote site ftyp <Dateibearbeitungstyp>
z.B.: quote site ftyp binaryDie Funktion site modc legt das erste Zeichen der Zeichenfolge zum Wechsel zwischen dem DVS-Dateisystem und dem POSIX-Dateisystem fest. Die Funktion modc entspricht dem Client-Kommando modchar, das auf "modchar - Zeichenkette wechseln" detailliert beschrieben ist. Einzugeben ist:
quote site modc <Character>
z. B.: quote site modc $Die Funktion site setc ermöglicht die Einstellung der Zeichensatznamen (CCSN) für die Zeichensatz-Konvertierung. Die Funktion setc entspricht dem Client-Kommando setcode, das auf "setcode - Code-Tabellen wechseln" detailliert beschrieben ist. Einzugeben ist:
quote site setc <Host CCSN> <Net CCSN>
z. B.: quote site setc EDF049 ISO88599Die Funktion
site sfil legt spezielle Verhaltensweisen beim Transfer von Dateien fest und entspricht dem Client-Kommando setfile, das auf "setfile - Datei-Marker ein-/ausschalten" detailliert beschrieben ist.Einzugeben ist:
quote site sfil datend on | off | lbp
Ein-/Ausschalten des speziellen EOF-Markers (Default: eingeschaltet) oder Verwendung der neuen EOF-Markierungsmethode Last Byte Pointer (LBP).quote site sfil pademptyrec on | off
Ein-/Ausschalten des Auffüllens von leeren SAM-Records (Default: ausgeschaltet).z.B.: quote site sfil datend off
quote site sfil pademptyrec onDie Funktion site cmod (siehe Beschreibung des Client-Kommandos copymode auf "copymode - 1:1-Übertragung von BS2000-Plattendateien ein-/ausschalten").
Die Funktion site svfs aktiviert bzw. deaktiviert TVFS für die jeweilige Sitzung. Einzugeben ist:
quote site svfs on | off
Aktivieren/Deaktivieren von TVFS.z.B.: quote site svfs on
Die Funktion site sopt erlaubt das Setzen von Variablen, die das Verhalten des FTP-Servers steuern. So kann mit
quote site sopt assignCCSNtoFile NO | YES
das automatische Zuweisen des COD-CH-SET-Dateiattributs beim Schreiben einer Datei (de)aktiviert werden.z.B.: quote site sopt assignCCSNtoFile YES aktiviert diese Zuweisung, so dass beim Transfertyp ascii den geschriebenen SAM-Dateien der aktuell eingestellte Host-CCSN als COD-CH-SET-Attribut zugewiesen wird.
Kommandos des FTP-Servers, die die Restart-Fähigkeit des FTP-Clients unterstützen
Folgende Kommandos des FTP-Servers unterstützen die Restart-Fähigkeit von FTP-Client und FTP-Server:
mdtm
size
rest
mdtm – Datum und Uhrzeit der bislang letzten Änderung einer Datei ermitteln
Das mdtm-Kommando liefert Datum und Uhrzeit der bislang letzten Änderung einer Datei:
Meldung: 213 <JJJJMMTThhmmss>
mdtm |
<datei> |
<datei>
Datei, für die das mdtm-Kommando Datum und Uhrzeit der letzten Änderung liefert.
Beispiel
quote site mdtm testdatei
213 20101015204331
size – Größe einer Datei ermitteln
Das size-Kommando gibt an, wie viele Bytes im Falle eines Transfers dieser Datei über das Netz übertragen würden. Dabei werden die aktuellen Einstellungen für mode, type, struct und ftyp berücksichtigt. Für mode <> stream wird das size-Kommando mit einem Fehler-Code abgewiesen.
Es kann vorkommen, dass bei einem BS2000-FTP-Server das size-Kommando aus technischen Gründen deaktiviert ist.
Meldung: 213 <Größe der Datei (in Byte)>
size |
<datei> |
<datei>
Datei, für die das size-Kommando die Größe liefert.
Beispiel
quote site size testdatei
213 498665
rest – Datei-Position spezifizieren, an der ein Dateitransfer aufsetzen soll
Das rest-Kommando spezifiziert eine beliebige Byte-Position, an deren korrespondierenden Datei-Position (statt am Dateianfang) ein durch ein nachfolgendes stor- oder recv-Komman-do ausgelöster Dateitransfer aufsetzen soll.
rest |
<position> |
<position>
Byte-Position, an dessen korrespondierender Datei-Position der nachfolgende Transfer einer Datei aufsetzen soll.
Kommando zur Anzeige der Server-Fähigkeiten
Der FTP-Server unterstützt das FEAT-Kommando (RFC 2389). Standardmäßig meldet FEAT die Unterstützung der Kommandos EPSV, EPRT, SIZE, MDTM und REST STREAM. Die Unterstützung von SIZE wird nicht angezeigt, wenn SIZE via Server-Option -disableSizeCommand deaktiviert wurde (siehe Handbuch „interNet Services Administratorhandbuch“).
Wenn die TLS-Unterstützung des FTP-Servers aktiviert ist, meldet FEAT außerdem die Unterstützung von AUTH TLS, PBSZ und PROT.
Wenn TVFS per FTP-Server-Option global aktiviert ist, dann meldet FEAT die Unterstützung von TVFS.
Zudem wird die Unterstützung der MLSD-/MLST-Kommandos anfänglich per MLST type*;size*;create*;modify*;perm*;unique*;UNIX.owner*;UNIX.group*;UNIX.mode*; gemeldet. Hierbei gibt die Liste hinter MLST an, welche Fakten über Dateisystemobjekte von den MLSD-/MLST-Kommandos grundsätzlich geliefert werden können. Die '*' markieren die Fakten, die aktuell zurückgeliefert werden; die Menge dieser Fakten kann mit dem OPTS-Kommando verändert werden. Details zu TVFS, MLSD und MLST siehe RFC 3659.
FEAT |
FTAC-Schnittstelle
Die Vorteile des FTP-Protokolls liegen in der u.a. durch die Normung bedingten weiten Verbreitung von FTP-Client-Programmen, der Aspekt Sicherheit hingegen bewegt sich nicht auf dem BS2000-üblichen Niveau. D.h. jeder, der Ihre Berechtigungsdaten kennt, kann sich Daten von Ihrer Kennung holen, Daten auf Ihrer Kennung speichern, Daten löschen oder Dateimerkmale ändern.
interNet Services bieten deshalb für FTP den Zugriff auf die FTAC-Schnittstelle an. Zum File Transfer openFT wird seit langem der Zugangs- und Zugriffsschutz openFT-AC angeboten.
FTAC bietet zum Schutz des BS2000-Servers folgende Möglichkeiten:
Entkopplung von FTP-Zugangsberechtigung und Login-Berechtigung
Zugriffsrechte abhängig von Partnersystemen
benutzerspezifische Zugriffsrechte
flexible Abstufung der Zugriffsrechte
Protokollierung jeder Berechtigungsprüfung
einfache Anwendung
Ausführliche Information zur FTAC-Unterstützung für FTP finden Sie im Kapitel „FTAC- Schnittstelle“.