「愚か者に対する保護」または重要なフォルダの変更/削除を禁止する方法

良い時間です。



歴史的に、私は小さなプロジェクト用の仮想マシンを持っています。 しかし、私はそのリソースを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で 不変属性を使用します。 このバンドルを使用して、意図的な構造変更に対する保護を設定できます。



All Articles