概要
Linux環境におけるシステム運用において、たとえ最高権限を持つrootユーザーであっても改ざんや削除を許さない堅牢なファイル保護手法を解説します。本記事では、拡張属性の確認を担うlsattrの基礎知識から、変更不可(immutable)属性+iや追記専用属性+aの実務適用に至るまで、ハンズオン形式で分かりやすく整理しました。
ファイル属性の確認と初期状態の把握(lsattr)
chattrコマンドの検証環境を整えるため、専用の作業ディレクトリを作成してカレントディレクトリを切り替えます。

属性変更の挙動を追跡するためのテスト対象として、空の設定ファイルを生成しておきます。

lsattrコマンドを実行すると、ext4などのファイルシステムが管理する拡張属性フラグを一覧表示できます。
生成直後のファイルに表示されるeフラグは、ブロック配置にエクステント(extent)フォーマットが採用されていることを示すLinuxの通常状態です。
⚙️ [主なコマンドオプション]
-a : ドットで始まる隠しファイルを含め、ディレクトリ内の全ファイルを一覧表示します。-d : ディレクトリ内の配下ファイルではなく、ディレクトリ自体の属性情報を表示します。-R : サブディレクトリ配下の階層を再帰的に走査して属性を表示します。-v : バージョン情報(世代番号)を付加して出力します。

root権限でも削除・改ざんを阻止する不変属性の設定(+iオプション)
対象ファイルに対して変更不可(immutable)属性を付与するには、管理者権限でsudo chattr +i ~/chattr_demo/secure_config.confを実行します。
この設定が施されたファイルは、システム管理者(root)であっても編集・削除・ファイル名変更といったあらゆる変更操作がOSレベルでブロックされます。

現在の属性ステータスを照会するため、lsattr ~/chattr_demo/secure_config.confを実行します。
出力結果にiフラグが含まれていれば、ファイルが完全なイミュータブル(書き換え禁止)状態へ移行したことを意味します。

強制削除オプション-fを付けて、保護状態にあるファイルの削除を実際に試行してみます。
不変属性によってカーネルレベルの保護が働いているため、強制削除コマンドを用いてもファイルは消去されず無傷のまま保持されます。

不変属性の解除と通常編集への復帰(-iオプション)
設定変更やメンテナンスを行う際は、sudo chattr -i ~/chattr_demo/secure_config.confを実行して不変保護を解除します。-iオプションを適用することで保護が無効化され、通常の編集や削除が可能な初期状態へと復帰します。

保護属性の解除状態を確認するため、lsattr ~/chattr_demo/secure_config.confを実行します。
先ほどまで存在していたiの表示が消滅し、安全に属性がクリアされたことが確認できます。

ファイルの編集可否を確かめるため、echo 'server_port=8080' >> ~/chattr_demo/secure_config.confコマンドを用いて設定値を末尾に追記します。

ファイル内容を出力して反映結果をチェックするため、cat ~/chattr_demo/secure_config.confを実行します。
追記したパラメータが問題なく保存されており、正常な更新作業が行える状態に戻ったことが確認できます。

ログ改ざんを防ぐ追記専用モードの運用(+aオプション)
追記専用(append-only)機能の検証用として、監査ログを想定したファイルを作成します。

既存ログの上書きや過去レコードの抹消を封じ、新規行の追加のみを許可するためにsudo chattr +a ~/chattr_demo/app_audit.logを実行します。+a属性を付与することで、セキュリティログや操作証跡の意図的な改ざんリスクを大幅に低減できます。

設定後の拡張属性をチェックするため、lsattr ~/chattr_demo/app_audit.logを実行します。
一覧にaフラグが表示されていれば、追記専用保護モードが正しく適用されています。

追記リダイレクト演算子(>>)を用いてイベントログを書き込み、正常に記録されるかを検証します。+aモードであっても末尾へのデータ追加処理はエラーなく実行されます。

末尾に正しく追加されたかを確かめるため、cat ~/chattr_demo/app_audit.logを実行します。
先ほど書き込んだ監査メッセージが欠損なく追加されていることが確認できます。

ディレクトリと配下ファイルへの一括再帰保護(-Rオプション)
ディレクトリ階層全体に対する一括制御を検証するため、サブディレクトリおよび複数の構成ファイルをまとめて用意します。

ディレクトリ本体とそれに含まれるすべての内包要素に対し、再帰オプション-Rを併用して一括で+i属性を適用します。-Rオプションを併用することで、配下のファイル構造全体に対して同一の保護属性を瞬時に展開できます。

配下の各ファイルに属性が反映されたか確認するため、lsattr ~/chattr_demo/protected_dirを実行します。
リストされた全ての構成要素にiフラグが付与され、包括的な防護体制が整ったことが分かります。

保守作業を終えて通常状態へ戻す際は、sudo chattr -R -i ~/chattr_demo/protected_dirを実行して再帰的に保護を解除します。-R -iを組み合わせることで一括解除が行われ、各ファイルの更新や不要になったディレクトリのクリーンアップが再び可能となります。

ここまで、管理者権限(root)の誤操作や攻撃による破壊からもファイルを強固に守るchattrコマンドの実践的な使い方を解説しました。
重要な設定ファイルや改ざんが許されないログデータに対してこれらの拡張属性を適切に組み込み、システム運用における不測のデータ消失や事故を未然に防ぎましょう。