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:
|
| 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:
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:
tftpDie 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:
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.
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
- 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/scheduleIn diesem Beispiel wird die Datei /home/john/schedule vom fernen Host host1 kopiert und in die lokale Datei newsched geschrieben.
$ _ - 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/hostsWenn die Kopieroperation erfolgreich ist, werden Informationen ähnlich den folgenden angezeigt:
In diesem Beispiel wird die Datei /etc/hosts vom fernen Host host3 kopiert und die Ausgabe in die Standardausgabe des lokalen Hosts umgeleitet.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 $ _ - 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.todoIn 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.
$ _ - Geben Sie Folgendes ein, um eine Datei auf ein anderes System zu kopieren:
tftp -p /home/jeanne/test host2 /tmp/testWenn die Kopieroperation erfolgreich ist, werden Informationen ähnlich den folgenden angezeigt:
In diesem Beispiel wird die Datei /home/jeanne/test an das Verzeichnis /tmp auf dem fernen Host host2 gesendet.Sent 94146 bytes in 6.7 seconds - Geben Sie Folgendes ein, um eine Binärdatei auf ein anderes System zu kopieren:
tftp -p core host3 /tmp/core imageWenn die Kopieroperation erfolgreich ist, werden Informationen ähnlich den folgenden angezeigt:
In diesem Beispiel wird die Binärdatei core aus dem aktuellen Verzeichnis an das Verzeichnis /tmp auf dem fernen Host host3 gesendet.Sent 309295 bytes in 15 seconds
Dateien
| Element | Beschreibung |
|---|---|
| /etc/tftpaccess.ctl | Erlaubt oder verweigert den Zugriff auf Dateien und Verzeichnisse. |