非ルートプロセスがセキュリティを損なうことなくすべてのホームディレクトリにアクセス(読み取りおよび書き込み)できるようにする方法についてのアイデアはありますか?一般ユーザーは互いのホームディレクトリにアクセスできないはずです。
すべてのアイデアを歓迎します。クレイジーなアイデアも歓迎します(nfsとkerberosの設定?):)
デフォルトでは、非ルートプロセスがWebサーバープロセスであるユーザーのホームディレクトリへのWebインターフェイスを作成する必要があります。
新しいファイルの所有者はホームディレクトリユーザーでなければなりません。可能ですか?
答え1
完全な回答が必要な場合は、追加情報が必要です。私が理解したところによると、あなたは調査したいかもしれませんアクセス制御リスト。これは多くのUnicesでサポートされており、どのユーザーがどのファイルにアクセスできるかをより効果的に制御できます。
注意して100%快適ではない場合は、まず仮想マシンで試してください。
答え2
私の考えの難しさは、ホームディレクトリがあなたの環境で公に実行可能ではないということです。
一つ入れてもいいアクセス制御リストすべてのホームディレクトリで、そのディレクトリ内の特定のユーザーまたはグループに実行権限を付与します。これにより、Webサーバーはユーザーのホームディレクトリにあるすべてのファイルにアクセスし、潜在的に権限を昇格させるための手段を提供できます(少なくともこれはローカルファイルアクセスの脆弱性の影響を向上させます)。たとえば、Solaris または Linux では、acl
デフォルトのファイルシステムがこのオプションでマウントされていることを確認し、次のように実行します。
setfacl -m user:www-data:x /home/*
(これをアカウント作成設定に統合してください)。その後、ユーザーにそのディレクトリが~/public_html
ユーザーが読めることを確認してくださいwww-data
。次のコマンドを実行できます。
setfacl -R -m default:user:www-data:rx ~/public_html
setfacl -R -m user:www-data:rx ~/public_html
別の可能性は、public_html
すべてのユーザーのディレクトリをファイルシステムの別の場所にマウントすることです。このアプローチの利点は、ホームディレクトリに対する権限が重要ではなく、Webサーバーがルートモードで実行される可能性があることです。 Linuxでは、ホームディレクトリに対して次のことができます。
mount --bind /home/joe/public_html /srv/homepages/joe
ディレクトリpublic_html
とその内容はまだアクセス可能でなければなりませんwww-data
。
Linux バインドのインストール方法のバリエーションは次のようになります。ファイルシステムバインディングファイルシステムこの方法は、public_html
Webサーバーが以下のすべてのファイルを読み取ることができることを除いて、binfs(ほとんどのUnix)をサポートし、ACL設定を必要としないすべてのオペレーティングシステムで機能します。
bindfs -u www-data -p 500 /home/joe/public_html /srv/homepages/joe