Befehle "tftp" und "utftp"

Zweck

Überträgt Dateien zwischen Hosts mit dem Trivial File Transfer Protocol (TFTP).

Syntax

{tftp | utftp} { -g -o -p -r -w } lokaler_Name Host-Port  ferner_Name [ netascii | image] [blksize #] [timeout #] [tsize]

Dialogsyntax

Befehlszeilensyntax

Beschreibung

Die Befehle /usr/bin/tftp und utftp übertragen Dateien zwischen Hosts mit dem Trivial File Transfer Protocol (TFTP). Da TFTP ein minimales Dateiübertragungsprotokoll ist, stellen die Befehle tftp und utftp nicht alle Features des Befehls ftp bereit. Die Befehle tftp und utftp bieten beispielsweise nicht die Möglichkeit, ferne Dateien aufzulisten oder Verzeichnisse auf dem fernen Host zu wechseln, und dem fernen TFTP-Server werden nur eingeschränkte Dateizugriffsrechte erteilt. Der Befehl utftp ist eine Form des Befehls tftp zur Verwendung in einer Pipe.

Der ferne Host muss einen Dämon tftpd, der von dem zugehörigen Dämon inetd gestartet wurde, und einen definierten Account haben, der den Zugriff auf den Dämon tftpd beschränkt. Verwenden Sie die vom Befehl tftpd definierte Prozedur, um die TFTP-Umgebung und den Account "nobody" einzurichten.

Anmerkung: Die Befehle tftp und utftp sollten nicht verfügbar sein, wenn der Host im sicheren Modus ausgeführt wird.

Der Befehl tftp ignoriert doppelte Bestätigungen für jeden gesendeten Block, sendet ein Fehlerpaket und wird beendet, wenn ein Block mit einer ungeeigneten (künftigen) Blocknummer eingeht. Er ignoriert auch doppelte Datenblöcke, wenn sie bereits empfangen wurden, sendet ein Fehlerpaket und wird beendet.

RFC2349-Optionsvereinbarung

Der tftp-Client kann die folgenden TFTP-Optionen mit dem Server vereinbaren: Blockgröße (blksize), Übertragungsgröße (tsize) und Zeitlimit (timeout). Mit größeren Übertragungsblockgrößen kann die Übertragungsleistung verbessert werden, tsize berichtet die Dateigröße vor der Übertragung, um den verfügbarem Speicherplatz zu überprüfen, und timeout vereinbart das Zeitlimit für Neuübertragungen. Der TFTP-Server muss RFC2349, damit Optionsvereinbarungen stattfinden können.

Zugriffssteuerung

In der Datei /etc/tftpaccess.ctl wird nach Zeilen gesucht, die mit allow: oder deny: beginnen. Andere Zeilen werden ignoriert. Wenn die Datei nicht existiert, wird der Zugriff zugelassen. Auf die zulässigen Verzeichnisse und Dateien kann zugegriffen werden und auf die abgelehnten Verzeichnisse kann nicht zugegriffen werden. Das Verzeichnis /usr könnte beispielsweise zulässig sein und das Verzeichnis /usr/ucb nicht. Dies bedeutet, dass auf jedes Verzeichnis und jede Datei im Verzeichnis /usr mit Ausnahme des Verzeichnisses /usr/ucb zugegriffen werden kann. Die Einträge in der Datei /etc/tftpaccess.ctl müssen absolute Pfadnamen sein.

Die Datei /etc/tftpaccess.ctl sollte vom Rootbenutzer beschreibbar und für alle Gruppen und andere Benutzer lesbar sein (d. h., Eigner der Datei sollte root mit den Berechtigungen von 644 sein). Der Benutzer nobody muss in der Lage sein, die Datei /etc/tftpaccess.ctl zu lesen. Andernfalls kann der Dämon tftpd die Existenz der Datei nicht erkennen und lässt den Zugriff auf das gesamte System zu. Weitere Informationen finden Sie in der Beispieldatei tftpaccess.ctl im Verzeichnis /usr/samples/tcpip.

Der Suchalgorithmus geht davon aus, dass der im Befehl tftp verwendete lokale Pfadname ein absoluter Pfadname ist. Er durchsucht die Datei /etc/tftpaccess.ctl nach allow:/-Einträgen. Er sucht wiederholt nach zulässigen Pfadnamen, wobei jeder Teilpfadname durch Hinzufügen der nächsten Komponente aus dem Dateipfadnamen gebildet wird. Der längste übereinstimmende Pfadname ist der zulässige Pfadname. Anschließend führt er dieselben Schritte für die nicht zulässigen Namen durch und beginnt dabei mit dem längsten übereinstimmenden zulässigen Pfadnamen.

Wenn der Dateipfad beispielsweise /a/b/c ist und die Datei /etc/tftpaccess.ctl die Einträge allow:/a/b und deny:/a enthält, wird nur eine Übereinstimmung für zulässige Pfadnamen (/a/b), aber keine Übereinstimmung für abgelehnte Pfadnamen, die mit /a/b beginnen, gefunden und der Zugriff wird zugelassen.

Wenn die Datei /etc/tftpaccess.ctl allow:/a und deny:/a/b enthält, werden eine Übereinstimmung für zulässige Pfadnamen (/a) und eine Übereinstimmung für abgelehnte Pfadnamen, die mit /a beginnen (/a/b), gefunden und der Zugriff wird verweigert. Wenn die Datei /etc/tftpaccess.ctl allow:/a/b und deny:/a/b enthält, wird der Zugriff verweigert, weil zulässige Namen zuerst gesucht werden.

Anmerkung: Weitere Informationen und Beispielkonfigurationen für Xstations, Client ohne Plattenspeicher und eingeschränkte Einträge finden Sie in der Datei /usr/samples/tcpip/tftpaccess.ctl.

Die Befehle tftp und utftp haben zwei Formate: interaktives Format und Befehlszeilenformat.

Interaktives Format

Im interaktiven Format werden die Befehle tftp und utftp allein oder mit dem Parameter Host, der den Standardhost für Dateiübertragungen in dieser Sitzung angibt, ausgeführt. Mit dem Parameter Port können Sie auch den zu verwendenden Port für die tftp oder utftp-Verbindung, z. B. den Port für mail, in der Datei /etc/services angeben. Wenn Sie einen dieser Befehle im interaktiven Format aufrufen, wird die Eingabeaufforderung tftp> angezeigt.

Beim Übertragen von Daten an einen fernen Host, werden die übertragenen Daten in dem mit dem Parameter ferner_Name angegebenen Verzeichnis gespeichert. Der ferne Name muss ein vollständig angegebener Dateiname sein und die ferne Datei muss vorhanden sein und Schreibberechtiugungen für andere haben. Der Befehl tftp versucht, die Daten in die angegebene Datei zu schreiben. Wenn der ferne TFTP-Server jedoch nicht über die erforderlichen Berechtigungen zum Schreiben der fernen Datei besitzt oder wenn die Datei noch nicht vorhanden ist, ist die Übertragung nicht erfolgreich. Dies kann mit dem Dämon tftpd überschrieben werden.

Befehlszeilenformat

Die Befehlszeilenformate der Befehle tftp und utftp sind äquivalent mit der Ausnahme, dass der Befehl utftp lokale Dateien nicht überschreibt. Der Befehl tftp kann eine Datei überschreiben, zeigt aber vorher eine Eingabeaufforderung für den Benutzer an. Da es nicht interaktiv ist, kann das Befehlszeilenformat des Befehls utftp in einer Pipe nützlicher sein als der Befehl tftp. Im Befehlszeilenformat werden alle Argumente für den jeweiligen Befehl in der Befehlszeile angegeben und es wird keine Eingabeaufforderung angezeigt.

Unterbefehle

Die Unterbefehle tftp und utftp können entweder im interaktiven Format oder im Befehlszeilenformat aufgerufen werden.

Im interaktiven Format verwendete Unterbefehle

Sobald die Eingabeaufforderung tftp> angezeigt wird, können die folgenden Unterbefehle ausgeführt werden:

Element Beschreibung
? [Unterbefehl] Zeigt Hilfeinformationen an. Wenn ein Parameter Unterbefehl angegeben ist, werden nur Informationen zu diesem Unterbefehl angezeigt.
ascii Synonym für den Unterbefehl mode ascii.
binary Synonym für den Unterbefehl mode binary. Dieser Unterbefehl wird im interaktiven Modus verwendet. Der Unterbefehl image hat dieselbe Funktion wie der Unterbefehl mode binary, wird aber in der Befehlszeile verwendet.
blksize Anzahl_Bytes Aktiviert die Vereinbarung der Option blksize mit dem Server. Nach erfolgreicher Vereinbarung kann dies die Übertragungsraten erheblich verbessern. Die gültigen Übertragungsblockgrößen sind 8 Oktette (mindestens) bis 65464 Oktette. Die Standardeinstellung sind 512 Oktette.
connect Host [Port] Legt den fernen Host und optional den Port für Dateiübertragungen fest. Da das TFTP-Protokoll Verbindungen zwischen Übertragungen nicht aufrechterhält, erstellt der Unterbefehl connect keine Verbindung zum angegebenen Host, sondern speichert sie für Übertragungsoperationen. Da der ferne Host im Rahmen des Unterbefehls get oder put angegeben werden kann, wodurch ein zuvor angegebener Host überschrieben wird, ist der Unterbefehl connect nicht erforderlich.

get ferne_Datei [lokale_Datei]

Element Beschreibung
get ferne_Datei ferne_Datei ferne_Datei [ferne_Datei . . . ]  Ruft eine Datei oder eine Gruppe von Dateien vom fernen Host auf den lokalen Host ab. Jeder Parameter ferne_Datei kann auf eine der folgenden beiden Arten angegeben werden:
  • Als Datei (Datei), die auf dem fernen Host existiert, wenn bereits ein Standardhost angegeben wurde.
  • Als Hostdatei (Host:Datei), wobei Host der ferne Host und Datei der Name der Datei ist, die auf das lokale System kopiert werden soll. Wenn dieses Format des Parameters verwendet wird, wird der letzte angegebene Host zum Standardhost für spätere Übertragungen in dieser tftp-Sitzung.
mode Typ Setzt den Typ (Typ) des Übertragungsmodus auf ascii oder binary. Standardmäßig wird der Übertragungsmodus ascii verwendet.

put lokale_Datei [ferne_Datei]

Element Beschreibung
put lokale_Datei lokale_Datei lokale_Datei [lokale_Datei . . . ] fernes_Verzeichnis             Speichert eine Datei oder eine Gruppe von Dateien vom lokalen Host auf dem fernen Host. Die Parameter fernes_Verzeichnis und ferne_Datei können auf eine der folgenden beiden Arten angegeben werden:
  • Als Datei oder Verzeichnis auf dem fernen Host, wenn bereits ein Standardhost angegeben wurde.
  • Mit dem Parameter Host:ferne_Datei, wobei Host der ferne Host und ferne_Datei der Name der Datei oder des Verzeichnisses auf dem fernen System ist. Wenn dieses Format des Parameters verwendet wird, wird der letzte angegebene Host zum Standardhost für spätere Übertragungen in dieser tftp-Sitzung.

In beiden Fällen muss der Name der fernen Datei oder des Verzeichnisses ein vollständig angegebener Pfadname sein, auch wenn das lokale und das ferne Verzeichnis denselben Namen haben. Wenn ein fernes Verzeichnis angegeben wird, wird davon ausgegangen, dass der ferne Host eine UNIX-Maschine ist. Der Standardwert des Unterbefehls put ist "write-replace", aber Sie können eine Option im Dämon tftpd hinzufügen, um "write-create" zuzulassen.

quit Beendet die TFTP-Sitzung. Das Programm kann auch mit einer Tastenkombination für Dateiende beendet werden.
status Zeigt den aktuellen Status des tftp-Programms an, einschließlich des aktuellen Übertragungsmodus (ascii oder binary), des Verbindungsstatus und des Zeitlimitwerts.
timeout Wert Setzt das Gesamtzeitlimit für die Übertragung auf die mit dem Parameter Wert angegebene Anzahl von Sekunden. Die gültigen Werte für den Parameter Wert sind alle Werte größer-gleich 1 Sekunde (der Standardwert ist 5 Sekunden).
trace Aktiviert oder inaktiviert die Paketwegverfolgung.
tsize Aktiviert die Vereinbarung der Option tsize mit dem Server. Auf diese Weise kann die Dateigröße vor Beginn der Übertragung ermittelt werden. Wenn die Zuordnung überschritten wird, wird ein Fehler zurückgegeben und die Dateiübertragung findet nicht statt.
verbose Aktiviert oder inaktiviert den ausführlichen Modus, in dem zusätzliche Informationen während der Dateiübertragung angezeigt werden.

Im Befehlszeilenformat verwendete Unterbefehle

In der folgenden Liste sind die verschiedenen Optionen für das Flag Aktion in diesem Format beschrieben:

Element Beschreibung
-w oder -p Schreibt (oder speichert) die mit dem Parameter lokaler_Name angegebenen lokalen Daten in die mit dem Parameter ferner_Name angegebene Datei auf dem mit dem Parameter Host angegebenen fernen Host. Wenn der Parameter lokaler_Name ein Dateiname ist, überträgt der Befehl tftp die angegebene lokale Datei. Wenn für den Parameter lokaler_Name ein Minuszeichen (-) angegeben ist, überträgt der Befehl tftp Daten aus der lokalen Standardeingabe an den fernen Host. Wenn der Parameter lokaler_Name die Standardeingabe ist, ist das zulässige Zeitlimit des Befehls tftp für die Eingabe aller Eingaben 25 Sekunden.
-r oder -g oder -o Liest ferne Daten aus der mit dem Parameter ferne_Datei angegebenen Datei auf dem mit dem Parameter Host angegebenen fernen Host und schreibt sie in die mit dem Parameter lokaler_Name angegebene Datei. Wenn der Parameter lokaler_Name ein Dateiname ist, schreibt der Befehl tftp die Daten in die angegebene lokale Datei. Für die Aktionen -r und -g fordert der Befehl tftp eine Bestätigung an, bevor eine vorhandene lokale Datei überschreibt. Für die Aktion -o überschreibt der Befehl tftp eine vorhandene lokale Datei ohne vorherige Bestätigungsaufforderung. Wenn für den Parameter lokaler_Name ein Minuszeichen (-) angegeben ist, schreibt der Befehl tftp die Daten in die lokale Standardausgabe.

Anmerkung: Da die Befehle tftp -g und tftp -r vor dem Überschreiben einer vorhandenen lokalen Datei eine Bestätigung anfordert, kann die Verwendung des Befehls tftp in einer Pipe nicht zweckmäßig sein. Der Befehl utftp führt die gleichen Aktionen -r und -g wie der Befehl tftp aus, wird jedoch einfach gestoppt, bevor eine lokale Datei überschrieben wird. Daher kann der Befehl uftp für die Verwendung in einer Pipe geeigneter sein.

In den beiden folgenden Dateiübertragungsmodi ist der Parameter ferner_Name der Name einer Datei, für die Schreibberechtigungen für andere festgelegt sind. Beachten Sie, dass der Parameter ferner_Name in Anführungszeichen (" ") eingeschlossen werden muss, wenn er Shellsonderzeichen enthält.

Die folgenden Übertragungsmodi sind verfügbar:

Element Beschreibung
netascii Überträgt die Daten als 7-Bit-ASCII-Zeichen in 8-Bit-Übertragungsbytes. Dies ist die Standardeinstellung.
image Überträgt die Daten als 8-Bit-Binärdatenbytes ohne Konvertierung in 8-Bit-Übertragungsbytes. Der Übertragungsmodus image kann bei der Übertragung zwischen zwei Hosts effizienter sein als der Übertragungsmodus netascii. Es wird empfohlen, bei der Übertragung von ASCII-Dateien von einer Workstation auf einen anderen Hosttyp netascii zu verwenden.

Beispiele

Die folgenden Beispiele unterscheiden zwischen dem interaktiven Format und dem Befehlszeilenformat des Befehls tftp:

Interaktives Format des Befehls tftp verwenden

Geben Sie Folgendes ein, um den Befehl tftp einzugeben, den aktuellen Status zu überprüfen, eine Verbindung zu einem fernen Host herzustellen und eine Datei von einem fernen Host auf Ihren lokalen Host zu übertragen:

tftp

Die Eingabeaufforderung tftp> wird angezeigt. Geben Sie an dieser Eingabeaufforderung den Unterbefehl status ein:

Eine Nachricht ähnlich der folgenden wird angezeigt:

Not connected.
Mode: netascii   Verbose: off   Tracing: off
Max-timeout: 25 seconds
tftp> _

Geben Sie an der Eingabeaufforderung tftp> den Unterbefehl connect und den Namen des fernen Systems ein, zu dem Sie eine Verbindung herstellen möchten:

tftp>  connect host1

Die Eingabeaufforderung tftp> wird als Hinweis darauf angezeigt, dass Sie mit host1 verbunden sind. Geben Sie an der Eingabeaufforderung tftp> den Unterbefehl get ein, um die Datei update vom fernen Host auf Ihren lokalen Host zu übertragen.

get /home/alice/update update 

Das Verzeichnis / home/alice auf dem fernen Host muss über Leseberechtigungen für andere verfügen. Die Datei /home/alice/update wurde von host1 in die Datei update auf Ihrem lokalen System übertragen. In diesem Beispiel ist der Benutzer mit host1 verbunden und die Datei update wird von host1 an den lokalen Host übertragen.

Befehlszeilenformat des Befehls tftp verwenden

  1. Geben Sie Folgendes ein, um eine Textdatei von einem fernen Host zu kopieren und in eine lokale Datei zu schreiben:
    tftp  -g newsched host1 /home/john/schedule
    $ _
    In diesem Beispiel wird die Datei /home/john/schedule vom fernen Host host1 kopiert und in die lokale Datei newsched geschrieben.
  2. Geben Sie Folgendes ein, um eine Datei von einem fernen Host zu kopieren und die Ausgabe an die Standardausgabe des lokalen Hosts umzuleiten:
    tftp  -g - host3 /etc/hosts
    Wenn die Kopieroperation erfolgreich ist, werden Informationen ähnlich den folgenden angezeigt:
    192.100.13.3 nameserver
    192.100.13.3 host2
    192.100.13.5 host1
    192.100.13.7 host3
    192.100.13.3 timeserver
    Received 128 bytes in 0.4 seconds
    $ _
    In diesem Beispiel wird die Datei /etc/hosts vom fernen Host host3 kopiert und die Ausgabe in die Standardausgabe des lokalen Hosts umgeleitet.
  3. Geben Sie Folgendes ein, um eine Datei von einem fernen Host zu kopieren, über eine Pipe an den Befehl grep zu leiten und sie in eine lokale Datei zu schreiben:
    utftp  -g - host1 /home/john/schedule | grep Jones > jones.todo
    $ _
    In diesem Beispiel wird die Datei /home/john/schedule vom fernen Host host1 kopiert. Anschließend wird die Datei über eine Pipe an den Befehl grep geleitet und in die lokale Datei jones.todo geschrieben.
  4. Geben Sie Folgendes ein, um eine Datei auf ein anderes System zu kopieren:
    tftp  -p /home/jeanne/test host2 /tmp/test
    Wenn die Kopieroperation erfolgreich ist, werden Informationen ähnlich den folgenden angezeigt:
    Sent 94146 bytes in 6.7 seconds
    In diesem Beispiel wird die Datei /home/jeanne/test an das Verzeichnis /tmp auf dem fernen Host host2 gesendet.
  5. Geben Sie Folgendes ein, um eine Binärdatei auf ein anderes System zu kopieren:
    tftp  -p core host3 /tmp/core image
    Wenn die Kopieroperation erfolgreich ist, werden Informationen ähnlich den folgenden angezeigt:
    Sent 309295 bytes in 15 seconds
    In diesem Beispiel wird die Binärdatei core aus dem aktuellen Verzeichnis an das Verzeichnis /tmp auf dem fernen Host host3 gesendet.

Dateien

Element Beschreibung
/etc/tftpaccess.ctl Erlaubt oder verweigert den Zugriff auf Dateien und Verzeichnisse.