なぜchmodだけでは不十分なのか?
rm -rfの誤入力は、すべてのシステム管理者にとって古典的な悪夢です。重要な設定ファイルが消えるのは一瞬ですが、システムの復旧と上司への報告には数時間を要することもあります。また、人的ミスだけでなく、自動スクリプトやマルウェアが/etc/resolv.confを書き換えてDNSを変更しようとするケースもあります。
「Root権限は絶対であり、何でもできる」というのはよくある誤解です。プロフェッショナルなシステム管理においては、より強固な「物理的な錠」のような仕組みが必要です。そこで登場するのが、chattr(Change Attribute)とlsattr(List Attribute)です。
ユーザーの読み取り/書き込み/実行権限を管理するchmodとは異なり、chattrはファイルシステムの属性(filesystem attributes)を直接操作します。これにより、ファイルを「不変(immutable)」の状態に設定できます。一度ロックされると、その属性を意図的に解除しない限り、Rootユーザーであっても削除、名前変更、内容の修正ができなくなります。
以前、ECサイトのCentOS 7サーバー群を管理していた際、提携先がログを確認するついでに誤ってNginxの設定ファイルを編集してしまうことがありました。Root権限を取り上げるのは運用上難しかったため、chattrでファイルをロックしました。その結果、その後1年間、設定ミスによるダウンタイムはゼロになりました。
ツールのインストールと確認
これらのツールは非常に軽量で、Ubuntu、Debian、RHELなどのほとんどのLinuxディストリビューションに標準で含まれています。これらはe2fsprogsパッケージの一部です。
以下の2つのコマンドで素早く確認してみましょう:
which chattr
which lsattr
もしサーバーにインストールされていない場合(非常に稀なケースです)は、すぐにインストールしてください:
# Ubuntu/Debianの場合
sudo apt update && sudo apt install e2fsprogs
# RHEL/CentOS/AlmaLinuxの場合
sudo yum install e2fsprogs
ファイルを「不可侵」にする方法
chattrの構文は非常にシンプルです:chattr [演算子] [属性] [ファイル名]。属性を追加するには+を、解除するには-を使用します。
1. +i 属性 (Immutable) – 絶対的なロック
これは最強の「奥義」です。+iを付与すると、ファイルはフリーズ状態になります。削除、名前変更、リンクの作成、上書きのすべてが禁止されます。Rootユーザーであっても “Operation not permitted” というエラーが表示されます。
# 不正なユーザー作成を防ぐためにpasswdファイルをロックする
sudo chattr +i /etc/passwd
# 耐久テストのために削除を試みる
sudo rm -f /etc/passwd
# 結果: rm: cannot remove '/etc/passwd': Operation not permitted
2. +a 属性 (Append-only) – 追記のみ許可
この属性はログファイルの救世主です。アプリケーションによる新しいデータの追記は許可しつつ、(権限を奪取したハッカーを含め)誰にも過去の痕跡を消させないようにします。
# ログファイルを追記専用に設定する
sudo chattr +a /var/log/secure_activity.log
# 上書きを試みる(即座に失敗する)
echo "すべてのデータを削除" > /var/log/secure_activity.log
# 結果: Permission denied
# 追記を試みる(見事に成功)
echo "新しいログ行を追加" >> /var/log/secure_activity.log
3. その他の便利な属性
+c: ディスク上のファイルを自動的に圧縮して容量を節約します。+u: 削除後のデータ復旧を容易にします。+s: データを0で上書きして安全に削除し、ソフトウェアによる復元を不可能にします。
lsattrによる属性の確認
通常のls -lコマンドでは、これらの属性を確認することはできません。隠された保護レイヤーを確認するには、lsattrを使用します。
# ファイルの属性を確認する
lsattr /etc/passwd
# 表示結果:
# ----i---------e---- /etc/passwd
iという文字は、ファイルがロックされていることを示します。ハイフン--------------のみが表示されている場合は、ファイルは通常の状態です。
ロックされたファイルを編集する手順
メンテナンスが必要な場合は、以下の3ステップで行います:ロック解除 -> ファイル編集 -> 再ロック。
# ステップ1:ロックを解除
sudo chattr -i /etc/passwd# ステップ2:ファイルを編集 (vi, nanoなど)
# ステップ3:保護を再設定
sudo chattr +i /etc/passwd
</pre>システム管理者の実戦経験
本番環境(Production)のサーバーでは、私は常に
.ssh/authorized_keysファイルにchattr +iを適用しています。これにより、悪意のあるスクリプトが勝手にSSHキーを挿入してアクセス権を維持(永続化)しようとするのを阻止できます。これは非常に低コストながら、極めて効果的なセカンダリセキュリティ層となります。注意点:
chattrはExt4やXFSで適切に動作します。ただし、NFSなどのネットワークファイルシステムや、特定の仮想化ディスク上では期待通りに動作しない場合があります。大規模に展開する前に、必ずステージング環境で十分にテストしてください。
chattrとlsattrを巧みに活用することで、より安心して眠れるようになります。あなたのサーバーは、ケアレスミスに対しても強力な盾を持つことになるのです。

