web-dev-qa-db-ja.com

システムユーザーアカウントとは別にSFTPまたはFTPサーバーを実行する

いわば「ユーザースペース」で、SSHデーモンを使用せずにSFTPサーバーを実行することは可能ですか?システムのユーザーアカウントがログイン資格情報にどのように関連付けられているかが気に入らないので、多くの許可されたユーザーとパスワードの組み合わせを指定するための個別の構成ファイルを用意し、デーモンを1人のユーザーで実行します。それがSFTPで不可能な場合は、FTPソリューションでも問題ありません。

2
Vanadium

sSHデーモンを使用せずに、いわば「ユーザースペース」で

ここには誤解があります。 SSHデーモンは、他のネットワークプロトコルサーバーと同じ「ユーザースペース」であり、必ずしもOSの一部である必要はありません。

さらに重要なことは、ログイン資格情報がどのように検証されるかは、SSHデーモンのpresenceとは関係ありませんが、SSHデーモンを使用するすべてのものと、動作するように記述(プログラム)される方法です。 forces SSHデーモンがシステムアカウントを使用することは何もありません。それはプログラマーの選択です(確かに、日常の使用に意味のある唯一の選択ですが)。

(補足:これはすべてのネットワークソフトウェアに当てはまるとは限りません。たとえば、Windowsの組み込みSMBサーバーは実際にはOSの一部であり、通常は交換できません。しかし、幸いなことに、あなたの質問はSMB、LinuxではSSHについてです。)についてではありません。

続けて:

SSHデーモンを使用せずにSFTPサーバーを実行することは可能ですか?

はいといいえ。

SFTPは、SSHトランスポートを介して使用されるように定義されています。ほとんどのクライアントは他のトランスポートをサポートしません。重要な結果は、SFTPには独自のnoセキュリティ(認証や暗号化など)がないことです。これらのセキュリティ層はSSHハンドシェイク中に確立されます。

ただし、SFTPはOpenSSHのsshdを特に必要とせず、一般にフル機能のシステム全体のSSHデーモンも必要としません。完全なスタックは他のソフトウェアで実装できます。

システムのユーザーアカウントがログイン資格情報にどのように関連付けられているかが気に入らない

一般的なSSHデーモンの場合、システムアカウントを使用することは、クライアントにインタラクティブなシェルアクセスを許可し、それを介してあらゆる種類のexternalプログラムおよびシステムコマンドを実行できるため、意味のある唯一のオプションになる傾向があります。 SSHサービスだけでは、OSの助けを借りない限り、異なるユーザーが実行するプログラムを分離することはできません。偶然にも、それこそがシステムアカウントの目的です。そのため、OpenSSHはシステムアカウントのみを使用します。

幸い、上記はFTPデーモンと専用の「SFTPのみ」のSSHデーモンでは問題になりません。すべてのFTP/SFTP操作はデーモン自体の内部で行われ、ユーザーの分離にはファイルパスを注意深く検証する以外に何も必要ないためです。

それで、最終的にあなたの要求に到達します:

許可されたユーザーとパスワードの組み合わせを指定し、デーモンを1人のユーザーで実行するために、別の構成ファイルが必要です。

そのためのソフトウェアがあります。何らかの形式のデータベースを介して、認証「仮想ユーザー」をサポートするFTPサーバーを検索します。 ProFTPd など、SFTP機能を備えたものもあります。ただし、ほとんどの場合、FTP/FTPSのみを実行します。

4
user1686