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

2485
Scott Oliver

Ich muss zurzeit einen sehr eingeschränkten FTP-Client / Adapter verwenden, um einige Dateien auf einen Remote-Server hochzuladen. Ich sage begrenzt, da die resultierenden Dateien auf dem Remote-Server mit den Berechtigungen 000 landen und es im Gegensatz zu einigen anderen Clients scheinbar keine Möglichkeit gibt, die Berechtigungen festzulegen. (Ich weiß, dass WinSCP das kann.)

Mir wurde von einem Kollegen mitgeteilt, dass FTP in Bezug auf Dateiberechtigungen völlig agnostisch ist und die Dateidaten einfach überträgt. Angenommen, dies ist richtig, wie legt ein Client wie WinSCP die Berechtigungen der Datei auf dem Remote-Server fest? Es wurde mir nahegelegt, dass der Client wahrscheinlich ein chmod über SSH ausführt, dh die Berechtigungen nachträglich setzt.

6
Es hat nichts mit SSH zu tun. Es ist einfach ein CHMOD-FTP-Befehl verfügbar. Abgesehen davon unterstützen die meisten FTP-Server die Einstellung eines Standardmodus für neu erstellte Dateien. Seth vor 7 Jahren 2
Genau wie bei einer FYI ... Normalerweise wird beim FTP-Austausch lediglich eine Verbindung zum Server / zur FTP-Mailbox mit dem Client hergestellt und dann in das entsprechende Upload-Verzeichnis hochgeladen. Wenn Sie die Erlaubnis zum Hochladen haben, wenn Sie nicht berechtigt sind, den Zugriff zu verweigern usw. Der Client muss in der Regel keine Berechtigungen festlegen, insbesondere mit WinSCP. Zumindest habe ich dies mit WinSCP nie für Hunderte von FTP tun müssen Ich betreue und unterstütze den Austausch, der automatisiert ist. Sobald die Dateien den FTP-Server erreicht haben, ist der Client-Auftrag abgeschlossen. Lassen Sie den Empfänger oder die FTP-Administratoren auf andere Weise mit den Serverberechtigungen umgehen. Pimp Juice IT vor 7 Jahren 1
@Seth: Während Sie Ihren Kommentar abgegeben haben, bevor meine Antwort veröffentlicht wurde, weise ich Sie bitte darauf hin, dass der FTP-Befehl "CHMOD" eigentlich kein Teil des Dateiübertragungsprotokolls ist, obwohl mehrere FTP-Client-Softwareprodukte möglicherweise scheinen einen solchen Befehl unterstützen. (Ich diskutiere dies weiter in meiner Antwort.) TOOGAM vor 7 Jahren 0
@Walmart Was sind diese "Hunderte von FTP-Übertragungen"? Standorte, die Daten austauschen, die öffentlich verteilt werden? Ich denke, viele Leute verwenden FTP zum Hochladen von HTML-Inhalten und möchten dann die Berechtigungen ändern, damit Dateien für die breite Öffentlichkeit zugänglich sind. Es ist eine sehr unsichere Praxis, die ich nicht empfehle (die Verwendung von SFTP / SCP / HTTPS wird bevorzugt), aber ich glaube, diese Praxis wird (leider) immer noch viel gelehrt. Ich schlage lediglich vor, dass es unterschiedliche "Use Case" -Szenarien geben kann, in denen solche Funktionen stärker als andere Szenarien verwendet werden. TOOGAM vor 7 Jahren 1
@ TOOGAM Danke für den Hinweis, Ihre Antwort ist interessant zu lesen! Da es sich jedoch um einen SITE-Befehl handelt, handelt es sich um einen FTP-Befehl (Implementierung abhängig von der Serversoftware), und SSH wäre nicht beteiligt (worauf ich wirklich abzielte). Im Moment (unter Berücksichtigung Ihrer Informationen) gehe ich davon aus, dass der FTP-Server schlecht konfiguriert ist oder ein anderer Prozess stört. Seth vor 7 Jahren 0
@ TOOGAM Ah ... Ich habe in diesem Zusammenhang nicht darüber nachgedacht, aber es macht sicherlich Sinn und leider musste auch ich eine solche Konfiguration einrichten, um FTP-Zugriff auf ein "Test" -IS-Verzeichnis auf einem IIS-Server einmal zu erlauben Entwickler können Änderungen an der Test-Site auf dem Produktions-Server-Betriebssystem vornehmen (separate Test- und Produkt-Sites auf demselben Betriebssystem). Auch sind die Hunderte automatisierter Jobs für das, worüber ich übrigens gesprochen habe, größtenteils nicht öffentlich zugänglich, aber das, was Sie hinzugefügt haben, verdeutlicht und macht Sinn. +1 auf deine Antwort Pimp Juice IT vor 7 Jahren 0
Ein FTP-Client kann möglicherweise keine Dateiattribute auf einem Server festlegen. In der Tat kann er nichts für den Server tun, außer die Aufforderung, dass der Server etwas dafür tut. (Angenommen, es werden keine Fehler auf dem Server ausgenutzt.) David Richerby vor 7 Jahren 0
Verwenden Sie eigentlich sftp als getaggt? sftp ist ein völlig anderes Protokoll als ftp oder ftps. Die Antwort für ftp oder ftps unterscheidet sich von der Antwort für sftp. Wenn Sie sftp nicht verwenden, sollte das Tag entfernt werden. Wayne Conrad vor 7 Jahren 1
@WayneConrad Die Frage ist nicht wirklich mein Problem, ich habe nur eine begrenzte Auswahl. Ich wollte eher wissen, welche Mechanismen für FTP usw. verfügbar sind, vorausgesetzt, ich kenne mindestens einen Client, der Berechtigungen konfigurieren kann. WinSCP unterstützt SFTP und SCP, daher sollte dieses Tag mindestens erhalten bleiben. Scott Oliver vor 7 Jahren 0
Wenn das Tag bleiben sollte, ist die Frage zu breit. Eine separate Frage sollte für SFTP gestellt werden. Wayne Conrad vor 7 Jahren 0

1 Antwort auf die Frage

8
TOOGAM

Ihr Kollege hat Recht, in dem Sinne, dass der RFC 959 von Oktober 1985 offenbar keinen speziell für Berechtigungsänderungen entwickelten Befehl enthält. RFC 959 enthält Angaben zu Befehlen zum Hochladen von Dateien ( RFC 959 Seite 30 enthält den Befehl "STOR" zum Speichern von Dateien), Herunterladen von Dateien (Seite 30 enthält den Befehl "RETR" zum Abrufen von Dateien) und optionale Erweiterungen wie MKD (Verzeichnis "make") ) und RMD (Verzeichnis entfernen). Der RFC stellt fest: "Es ist das Vorrecht eines Server-FTP-Prozesses, um Zugriffssteuerungen" "aufzurufen." (Nach meiner Lektüre des RFC glaube ich jedoch, dass die "Zugriffskontrollen", auf die Bezug genommen wird, mehr darauf abzielen, die Möglichkeit der Anmeldung mit einem Benutzernamen zu unterstützen und nicht auf die Idee zu verweisen, FTP zur Änderung der Berechtigungen zu verwenden Dateien.)

RFC 959, Seite 47, enthält eine Liste der Befehle, die in der FTP-Spezifikation von RFC 959 integriert sind. Ich habe mich eine Zeit lang gefragt, ob ich einen FTP-Server für eine bestimmte Plattform erstellen möchte. Ich habe jeden dieser Befehle durchgelesen. Ich habe auch einen Blick auf die IANA-Registrierung „FTP Commands and Extensions“ gerichtet, auf die im März 2010 RFC 5797 verwiesen wird . Ich erinnere mich nicht an einen dieser Befehle, der eine Möglichkeit zum Ändern von Berechtigungen bietet, außer einem:

RFC 959, Seite 33, hat den Befehl "SITE". (Einige FTP-Clients verfügen über einen lokalen Befehl mit dem Namen "QUOT" oder "quote", der schließlich einen SITE-Befehl an den FTP-Server sendet.) Grundsätzlich ist der Standard des SITE-Befehls, dass der Text an den FTP-Server gesendet wird Der FTP-Server entscheidet, was er damit machen soll. Mit diesem Befehl können Sie 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 Befehl HELP SITE angegeben werden."

Die Herausforderung an diese Theorie besteht lediglich darin, dass der Befehl "HELP SITE" tatsächlich dazu führt, dass Text vom FTP-Server angezeigt wird, und dass unvollständige Dokumentation möglicherweise nicht alle verfügbaren Möglichkeiten dokumentiert.

Basierend auf der Antwort von Jonathan Leffler auf die Frage von knoti99 nach „chmod-Syntax in FTP“ können wir sehen, dass das klassische Programm „ncftp“ den Befehl „SITE CHMOD“ verwendet hat, um den Befehl „chmod“ von ncftp zu implementieren, und dass diese Funktion nicht von unterstützt wird alle FTP-Server.

Noch eine Randbemerkung, wenn ich den FTP-Teil dieser Antwort vervollständige: FTP ist sehr schnüffelig. Im Grunde meine ich damit, dass FTP Aktionen mit "Klartext" durchführt. Wenn Sie "Packet Sniffing" ("Packet Capturing") - Software wie tcpdump oder Wireshark verwenden, können Sie sehen, was mit FTP passiert. Wenn Sie versuchen, eine Datei zu übertragen, bei der es sich um eine kleine Textdatei handelt, und sehen, was im Netzwerkverkehr passiert, sind die Ergebnisse wahrscheinlich leicht zu verstehen. 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 einfachere Informationen lieferte. Die Kenntnis dieses Prozesses kann jedoch hilfreich sein, wenn Sie sich fragen, was während des FTP-Vorgangs passiert Kommunikation.

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

Es wurde mir nahegelegt, dass der Client wahrscheinlich ein chmod über SSH ausführt, dh die Berechtigungen nachträglich setzt.

Ich denke, das ist eine nette Vermutung, obwohl ich glaube, dass dies nicht genau ist, wenn es um FTP geht. Tatsächlich beschreibt diese Vermutung wahrscheinlich genau den genauen Prozess, der verwendet wird, wenn die SFTP- und SCP-Protokolle verwendet werden. Da beide Protokolle auf SSH basieren, kann der Befehl "chmod" unter Verwendung derselben SSH-Verbindung gesendet werden, die auch für den Rest der verschlüsselten Verbindung verwendet wird. Nach meinem Lesen dieser Protokolle glaube ich tatsächlich, dass Dateiberechtigungen normalerweise genau festgelegt werden, wenn SFTP (und SCP, wenn dies auch das Festlegen der Dateiberechtigungen unterstützt) festgelegt werden.

Die Art und Weise, wie dies normalerweise mit dem FTP-Protokoll gehandhabt wird, ist jedoch eine ganz andere Geschichte, wie ich gerade beschrieben habe. Wenn Sie das FTP-Protokoll (Klartext) verwenden, ist dies technisch möglich, aber eher unwahrscheinlich, dass SSH zur Weiterverfolgung verwendet wird. (Wenn Software zur Unterstützung von SSH in der Lage ist, unterstützt sie im Allgemeinen auch SFTP oder SCP oder beides. Daher wird die Unterstützung des alten FTP-Protokolls normalerweise so ausgelegt, dass die Komplexität der verschlüsselten Kommunikation nicht als Teil des Systems verwendet wird verarbeiten.)

Viele Leute, die mit den Protokollen nicht sehr vertraut sind, verwenden FTP als Abkürzung, um sowohl auf FTP als auch auf SFTP und FTPS zu verweisen. Da die Frage alle drei als Tags hat, würde ich nicht ausschließen, dass Scott SFTP tatsächlich verwendet. Janus Bahs Jacquet vor 7 Jahren 0