web-dev-qa-db-ja.com

FTPクライアントはサーバーにファイルのアクセス許可をどのように設定しますか?

私は現在、非常に限られたFTPクライアント/アダプターを使用して、いくつかのファイルをリモートサーバーにアップロードする必要があります。結果のファイルは最終的にアクセス許可000のリモートサーバーに置かれ、他のクライアントとは異なり、アクセス許可を構成する方法がないように見えるため、制限付きと言います。 (私はWinSCPがこれを行うことができることを知っています。)

同僚から、FTPはファイルのアクセス許可に関して完全に不可知論的であり、単にファイルデータを転送するだけだと言われました。これが正しいと仮定すると、WinSCPなどのクライアントはリモートサーバー上のファイルのアクセス許可をどのように設定しますか?クライアントがSSH経由でchmodを実行している可能性が高い、つまり事後に権限を設定している可能性が高いことが私に示唆されました。

5
Scott Oliver

1985年10月の RFC 959 は、許可の変更のために特別に設計されたコマンドを提供していないように見えるという意味で、あなたの同僚は正しいです。 RFC 959には、ファイルをアップロードするコマンド( RFC 959ページ ファイルを保存するための「STOR」コマンドがあります)、ファイルをダウンロードするコマンド(30ページにファイルを取得するための「RETR」コマンドがあります)、 MKD(ディレクトリの作成)やRMD(ディレクトリの削除)などのオプションの拡張機能。 RFCは、「アクセスを呼び出すのはサーバーFTPプロセスの特権です」「制御」と述べています。 (ただし、RFCを読んだところ、参照されている「アクセス制御」は、ユーザー名でログインする機能をサポートするためのものであり、FTPを使用してのアクセス許可を変更するという考えを参照するつもりはないと思います。ファイル。)

RFC 959ページ47 RFC 959のFTP仕様に組み込まれているコマンドのリストが含まれています。しばらくの間、特定のプラットフォーム用のFTPサーバーを作成することを考えていましたが、読み通しました。それらの各コマンド。また、2010年3月の RFC 5797 で参照されている IANA「FTPコマンドと拡張機能」レジストリ も確認しました。次の1つを除いて、権限を変更する方法を提供するコマンドを覚えていません。

RFC 959 33ページ 「SITE」コマンドがあります。 (一部のFTPクライアントには、「QUOT」または「quote」と呼ばれるローカルコマンドがあり、最終的にFTPサーバーにSITEコマンドを送信します。)基本的に、SITEコマンドの標準は、テキストがFTPサーバーに送信されることです。 FTPサーバーはそれをどうするかを決定します。このコマンドを使用すると、ファイルのアクセス許可を変更したり、サイトでファイルを検索したり、FTPサーバーを再起動したりできます。理論的には、コマンド「HELP SITE」を送信すると、siteコマンドで提供されるいくつかの機能の詳細が表示されます。 RFC 959の33ページでは、次のように指定されています。

「これらのサービスの性質と
それらの構文の仕様は、への返信で述べることができます
HELPSITEコマンド。」

この理論への挑戦は、「HELP SITE」コマンドが実際にFTPサーバーからのテキストを表示する結果になり、不完全なドキュメントが実際に利用可能なすべての可能性をドキュメント化しない可能性があるということです。

「FTPのchmod構文」に関するknoti99の質問に対するJonathan Lefflerの回答 に基づいて、従来の「ncftp」プログラムが「SITECHMOD」コマンドを使用してncftpの「chmod」コマンドを実装したことがわかります。この機能は、すべてのFTPサーバーでサポートされているわけではありません。

この回答のFTP部分を完了する際のもう1つの注意点:FTPは非常にスニッフィング可能です。基本的に、FTPは「クリアテキスト」を使用してアクションを実行するということです。 tcpdumpやWiresharkなどの「パケットスニッフィング」(「パケットキャプチャ」)ソフトウェアを使用すると、FTPで何が起こるかを確認できます。小さなテキストファイルであるファイルを転送して、ネットワークトラフィックがどのように発生するかを確認すると、結果を理解するのは非常に簡単です。このようなアプローチを使用すると、権限を変更して、ソフトウェアが実際に使用しているコマンドを確認できます。これは設定に少し時間がかかる可能性があることを私は知っています。そのため、この回答は多くの入手しやすい詳細を提供しましたが、FTP中に何が起こるかについて他の詳細を知り始めた場合は、このプロセスについて知ることが役立つ可能性がありますコミュニケーション。

(この回答を編集して、質問の別の部分への回答を追加しました。)

クライアントがSSH経由でchmodを実行している可能性が高い、つまり事後に権限を設定している可能性が高いことが私に示唆されました。

FTPに関しては正確ではないと思いますが、それは良い推測だと思います。実際、その推測は、SFTPおよびSCPプロトコルが使用されるたびに使用される正確なプロセスをおそらく正確に説明しています。これらのプロトコルは両方ともSSHに基づいているため、「chmod」コマンドは、暗号化された接続の残りの部分と同じSSH接続を使用して送信できます。これらのプロトコルを読んだことから、これは実際には、SFTP(およびファイルパーミッションの設定もサポートしている場合はSCP)を使用するときにファイルパーミッションが通常設定される方法とまったく同じであると信じています。

ただし、これが通常FTPプロトコルで処理される方法は、先ほど説明したように、まったく別の話です。プレーンテキストであるFTPプロトコルを使用している場合、技術的には可能ですが、フォローアップにSSHが使用されている可能性はほとんどありません。 (ソフトウェアがSSHをサポートするのに十分な能力がある場合、通常はSFTPまたはSCP、あるいはその両方もサポートします。その結果、古いFTPプロトコルのサポートは通常、暗号化された通信の複雑さが一部として使用されないように設計されています。処理する。)

8
TOOGAM