私はWebプロジェクトホスティング用の新しいサーバーを設定する任務を受けました。私は開発者なので、システム管理能力が不足しています。
私は少し簡単な解決策を思いつきました。各プロジェクトには一意のUNIXユーザーがあり、Webルートはユーザーの$HOME
。
構造は簡単です。
/home/<user>/web
/home/<user>/web/log
- ログファイル。/home/<user>/web/www
- ネットワーク文書のルートディレクトリです。/home/<user>/web/www/public
- 練習だけで、ドキュメントルートとパブリックルートを分離するためにさまざまなWebアプリケーションフレームワークが提案されました。
では、次のように権限を設定したいと思います。
/home/<user>/web
- 新しいファイル/ディレクトリは削除または追加できません。chown root:root
ここに役立ちます。/home/<user>/web/log
- ユーザーにとって読み取り専用なので簡単ですchown root:root
。/home/<user>/web/www
— 削除/修正ができず、内容の修正は自由です(除くpublic
)。ファイルとディレクトリを作成、削除、編集します。/home/<user>/web/www/public
- 削除/修正は不可能で、内容の変更は自由に可能です。
他のセキュリティおよび分離関連機能に使用することを選択しました。火災刑務所。
これまでに試したことは、chattr +a
新しいコンテンツを追加してコンテンツを編集できますが、削除することはできません。
質問を作成すると、同様の質問セクションが表示されます。サブディレクトリの削除防止/ディレクトリ構造の適用、働き、今使用したいと思います。
しかし、これらのディレクトリを設定するためのより透明な他の方法はありますか?
答え1
ディレクトリを削除するには、親ディレクトリへの書き込み権限が必要です。ディレクトリ権限と所有権は関係ありません。したがって、削除を防ぐために、/home/theuser/web
ユーザーに書き込み権限がないことを確認する必要があり、十分です/home/theuser
。
「ahelpshere」と書くとchown root:root
、親ディレクトリに削除されないように、そしてファイルが追加または削除されるのを防ぐために、ディレクトリ自体(既存のファイルは変更されません)
また、/home/theuser/web/log
便利な方法で読み取り専用にするには、ユーザーに書き込み権限がなく、ディレクトリを所有していないことを確認するだけでは不十分です。ユーザーが/home/theuser/web
(またはなど/home/theuser
)/home
を書くことができる場合は、/
名前を変更して自分が所有する新しいディレクトリを作成できます。/home/theuser/web/log
/home/theuser/web
log
/home/theuser/web/www
との場合、ルートは作成して所有/home/theuser/web/www/public
できますが、ユーザーに書き込み権限を与え、固定ビットをに設定します。ディレクトリに固定ビットがある場合は、その中のファイルを削除する必要があります(直接サブディレクトリを含める - ディレクトリはファイルタイプです)。ユーザーは自分が所有するファイルのみを削除できます。これにより、所有者(ルート)のみを削除できますが、ユーザーは他のすべてを自由に操作できます。www
www/public
www
public
chown root:root web/www web/www/public
chmod u=rwx,go= web/www web/www/public
chmod +t web/www
setfacl -m u:theuser:rwx web/www web/www/public
必ずしもルートである必要はありませんが、ユーザーではなく所有権である可能性があります。
1合理的な仮定、つまり必要なすべての巡回権限、関連SELinuxルールなしなどを前提とします。