ユーザーに 1 つまたは複数のフォルダーへの SFTP アクセスを許可する共有ホスティング環境をセットアップしようとしています。次のシナリオを検討してください。
/var/www/
には、ドメインを表す複数のディレクトリがあります。ユーザーは ACL に基づいてディレクトリ内のファイルを追加、変更、または削除できるため、ユーザーはjohn
と にフルアクセスできます/var/www/domain1.com
が、/var/www/domain2.org
にはアクセスできません/var/www/domain3.de
。もちろん、同時に、Web サーバーはすべてのディレクトリ内のファイルを読み取ることができる必要があります。
私が完全に理解していないのは、どのようにしてすべてを安全にするのかということです。
- すべてのユーザーは監禁されており
/var/www/
、閲覧が許可されているドメイン(サブフォルダ)のみ閲覧できます。 - Apacheユーザーは
www-data
すべてのフォルダに対して読み取りアクセス権のみを持つ - PHPは、ユーザーアップロードフォルダやログフォルダなどの一部のフォルダへの書き込み権限を持っています。
/var/www/domain/
- SFTP経由でアップロードされた新しいファイルは自動的に適切な権限を取得し、ユーザーは他の共有ホスティングユーザーがアクセスできないようにPHPで書き込み可能なフォルダを指定できます。
PHP の場合、各ドメインが個別のエントリでありpool.d
、ユーザーが自由に構成できる PHP-FPM インスタンスを意味します。
これまでの私のアイデアは、 というグループを追加しsftp
、 を設定してsshd
、グループに属するユーザーを に監禁sftp
し/var/www/
、それらのユーザーに対してパスワード認証を許可し、 を追加することでしたForceCommand internal-sftp
。次に、適切なユーザーが適切なディレクトリにアクセスできるように、内部のフォルダーにデフォルトの ACL を再帰的に設定します/var/www/
。しかし、フォルダーの所有ユーザーとグループとして何を設定すればよいのでしょうか。umask を調整する必要がありますか。それぞれの PHP-FPM プール インスタンスに適切なユーザーとグループは何ですか。