Wie legt ein FTP-Client Dateiberechtigungen auf dem Server fest?

Wie legt ein FTP-Client Dateiberechtigungen auf dem Server fest?

Ich muss derzeit einen sehr eingeschränkten FTP-Client/-Adapter verwenden, um einige Dateien auf einen Remote-Server hochzuladen. Ich sage eingeschränkt, weil die resultierenden Dateien mit den Berechtigungen 000 auf dem Remote-Server landen und es im Gegensatz zu einigen anderen Clients keine Möglichkeit zu geben scheint, die Berechtigungen zu konfigurieren. (Ich weiß, dass WinSCP dies kann.)

Ein Kollege sagte mir, dass FTP in Bezug auf Dateiberechtigungen völlig agnostisch sei und einfach die Dateidaten übertrage. Angenommen, das stimmt, wie legt ein Client wie WinSCP die Berechtigungen der Datei auf dem Remote-Server fest? Mir wurde gesagt, dass der Client wahrscheinlich einen chmod über SSH ausführt, also die Berechtigungen nachträglich festlegt.

Antwort1

Ihr Kollege hat Recht, denn der Oktober 1985RFC 959scheint keinen Befehl bereitzustellen, der speziell für Berechtigungsänderungen entwickelt wurde. RFC 959 enthält Spezifikationen für Befehle zum Hochladen von Dateien (RFC 959 Seite 30hat den Befehl „STOR“ zum Speichern von Dateien), Download-Dateien (Seite 30 hat den Befehl „RETR“ zum Abrufen von Dateien) und optionale Erweiterungen wie MKD (Make Directory) und RMD (Remove Directory). Der RFC stellt fest: „Es ist das Vorrecht eines Server-FTP-Prozesses, Zugriffs-„Kontrollen“ aufzurufen.“ (Nach meiner Lektüre des RFC glaube ich jedoch, dass es bei den erwähnten „Zugriffs-Kontrollen“ eher um die Unterstützung der Möglichkeit geht, sich mit einem Benutzernamen anzumelden, und nicht um die Idee, FTP zum Ändern der Berechtigungen von Dateien zu verwenden.)

RFC 959 Seite 47enthält eine Liste der Befehle, die in die FTP-Spezifikation von RFC 959 integriert sind. Ich habe eine Weile darüber nachgedacht, einen FTP-Server für eine bestimmte Plattform zu erstellen, und ich habe jeden dieser Befehle durchgelesen. Ich habe auch einen Blick aufIANA-Register „FTP-Befehle und -Erweiterungen“, auf die sich die im März 2010 veröffentlichteRFC 5797. Ich kann mich nicht erinnern, dass einer dieser Befehle eine Möglichkeit zum Ändern von Berechtigungen bot, außer einem:

RFC 959 Seite 33hat den Befehl „SITE“. (Einige FTP-Clients haben einen lokalen Befehl namens „QUOT“ oder „quote“, der letztendlich einen SITE-Befehl an den FTP-Server sendet.) Der Standard des SITE-Befehls besteht grundsätzlich darin, dass Text an den FTP-Server gesendet wird und der FTP-Server entscheidet, was damit zu tun ist. Die Verwendung dieses Befehls kann beispielsweise Dateiberechtigungen ändern, eine Site nach Dateien durchsuchen oder den FTP-Server neu starten. Theoretisch werden durch Senden des Befehls „HELP SITE“ Details einiger Funktionen angezeigt, die über den Site-Befehl bereitgestellt werden. RFC 959, Seite 33, spezifiziert dies sogar:

„Die Art dieser Dienste und die
Spezifikation ihrer Syntax können in einer Antwort auf
den HELP SITE-Befehl angegeben werden.“

Die Herausforderung an dieser Theorie besteht lediglich darin, dass der Befehl „HELP SITE“ tatsächlich dazu führt, dass Text vom FTP-Server angezeigt wird und eine unvollständige Dokumentation möglicherweise nicht wirklich jede einzelne verfügbare Möglichkeit dokumentiert.

Bezogen aufAntwort von Jonathan Leffler auf knoti99s Frage zur „chmod-Syntax in FTP“können wir sehen, dass das klassische „ncftp“-Programm den Befehl „SITE CHMOD“ verwendet hat, um den „chmod“-Befehl von ncftp zu implementieren, und dass diese Funktion nicht von allen FTP-Servern unterstützt wurde.

Noch eine Randbemerkung, während ich den FTP-Teil dieser Antwort abschließe: FTP ist sehr gut abhörbar. Im Grunde meine ich damit, dass FTP Aktionen mit „Klartext“ ausführt. Wenn Sie „Paket-Sniffing“-Software („Paketerfassung“) wie tcpdump oder Wireshark verwenden, können Sie sehen, was mit FTP passiert. Wenn Sie versuchen, eine Datei zu übertragen, die eine kleine Textdatei ist, und sehen, welcher Netzwerkverkehr stattfindet, werden die Ergebnisse wahrscheinlich ziemlich leicht zu verstehen sein. Mit einem solchen Ansatz könnten Sie Berechtigungen ändern und sehen, welche Befehle die Software tatsächlich verwendet. Ich weiß, dass die Einrichtung etwas zeitaufwändiger sein kann, weshalb diese Antwort viele leichter zu erhaltende Details enthielt, aber Kenntnisse über diesen Prozess könnten hilfreich sein, wenn Sie sich fragen, was bei der FTP-Kommunikation noch weitere Details betrifft.

(Ich habe diese Antwort bearbeitet, um eine Antwort auf einen anderen Teil der Frage hinzuzufügen.)

Mir wurde gesagt, dass der Client wahrscheinlich einen chmod über SSH ausführt, d. h. die Berechtigungen nachträglich festlegt.

Ich denke, das ist eine gute Vermutung, obwohl ich nicht glaube, dass das zutrifft, wenn es um FTP geht. Tatsächlich beschreibt diese Vermutung wahrscheinlich genau den genauen Prozess, der verwendet wird, wenn die Protokolle SFTP und SCP verwendet werden. Da beide Protokolle auf SSH basieren, kann der Befehl „chmod“ über dieselbe SSH-Verbindung gesendet werden, die auch für den Rest der verschlüsselten Verbindung verwendet wird. Aus meiner Lektüre dieser Protokolle glaube ich, dass dies tatsächlich genau die Art und Weise ist, wie Dateiberechtigungen normalerweise festgelegt werden, wenn SFTP verwendet wird (und SCP, wenn dies auch das Festlegen der Dateiberechtigungen unterstützt).

Die Art und Weise, wie dies beim FTP-Protokoll normalerweise gehandhabt wird, ist jedoch eine ganz andere Geschichte, wie ich gerade zuvor beschrieben habe. Wenn Sie das FTP-Protokoll verwenden, das Klartext ist, ist es technisch möglich, aber eher unwahrscheinlich, dass SSH zur Weiterverfolgung verwendet wird. (Wenn Software leistungsfähig genug ist, um SSH zu unterstützen, unterstützt sie im Allgemeinen auch SFTP oder SCP oder beides. Daher ist die Unterstützung des alten FTP-Protokolls normalerweise so konzipiert, dass die Komplexität verschlüsselter Kommunikation nicht als Teil des Prozesses verwendet wird.)

verwandte Informationen