良い時間です。
歴史的に、私は小さなプロジェクト用の仮想マシンを持っています。 しかし、私はそのリソースを100%使用しないので、欲張りにならず、数人の友人に共有させることにしました。 サイトがあまりないので、ホスティングにお金をかけないので、cpanelのようなものを設定しすぎることを考えました。 さらに、私はすべてを手動で構成することを好む人の一人です。 次の構造を選択しました。
/home/hostuser/vhosts/sitename.ru/{tmp,web,logs}
そして、質問が発生しました:ユーザーがsitename.ruのフォルダを削除/名前変更するのを防ぐ方法は?
Webフォルダーがない場合、apacheとnginxは警告を出しますが、とにかくロードします。 しかし、
logsフォルダーを削除/移動すると、エラーのためにapacheとnginxの両方が起動しません(私にとって非常に奇妙な動作です)。
hostuserフォルダーは、このユーザーとその個人グループ(
hostuser:hostuser )に完全に属します。つまり、必要に応じて、スーパーユーザーに属している場合でも、内部フォルダー/ファイルを削除できます。 では、ユーザーが(偶然または故意に)ホスティング全体を壊さないように、削除/再配置をどのように防ぐのでしょうか?
短いグーグルの後、解決策が見つかりました。 ext2、ext3、ext4などのファイルシステムでは、標準の権限とaclに加えて、ファイルに追加の属性を設定できます。
Wikiのすべての属性の詳細、または
man chattrをお読みください 。
不変の属性に興味があります。 ファイルまたはフォルダーにこの属性を設定できるのはスーパーユーザーのみです。
不変の属性をファイルに割り当てた場合、このファイルは変更または削除できません(スーパーユーザーでさえ、この属性を削除するまでこれを行うことはできません)。
不変の属性をフォルダーに割り当てると、このフォルダーを削除したり、その中の構造を変更したりすることはできません。 したがって、
sitename.ruフォルダーとその中の構造を保護する必要がある場合、単純なコマンドを実行する必要があることが
わかります。
chattr +i /home/hostuser/vhosts/sitename.ru
属性を削除するには、
-iフラグを使用し
ます 。
1つのフォルダー(たとえば、
logs )のみを保護する必要がある場合は、以下を実行できます。
touch /home/hostuser/vhosts/sitename.ru/logs/.keep chattr +i /home/hostuser/vhosts/sitename.ru/logs/.keep
実際、これは「スーパーユーザーの権限があっても」「愚か者からの保護」の方法です。
ご清聴ありがとうございました。
注意してください!この記事は
情報セキュリティに関するものでは
ないことを理解することが重要です。 メールボックスのロックは
情報セキュリティです。 火災警報ボタンのガラス
は愚か者に対する保護です。
.keepファイルを作成して
-i属性を指定すると、フォルダー自体を転送でき、ファイルを転送できます。 このファイルの前にファイル自体とフォルダー構造を削除することはできません。
より信頼性の高いレベルのセキュリティが必要な場合は、
mount --bindで 不変属性を使用します。 このバンドルを使用して、意図的な構造変更に対する保護を設定できます。