chattrコマンドでファイルの保護を強化!Linuxで属性を自在に操る方法

Linuxでは、ファイルやディレクトリのパーミッション(権限)を使ってアクセス制御を行いますが、それだけでは不十分な場合もあります。特に、誤ってファイルを削除してしまう、あるいは悪意あるスクリプトから大事なファイルを守りたいといったケースでは、さらに一歩踏み込んだ保護が求められます。
そんな時に役立つのが、chattr(change attribute)コマンドです。このコマンドを使えば、ファイルの属性を変更して、削除や書き換えを禁止するなど、より強固な保護が可能になります。
この記事では、chattrの基本から便利な使い方、解除方法までをわかりやすく解説します。Linuxユーザーならぜひ覚えておきたいテクニックです。


chattrコマンドとは?

chattrとは、Linuxにおいてファイルやディレクトリに「属性」を付け加えたり変更したりするコマンドです。通常のパーミッション(chmodchown)では制御できない細かな挙動を制限できます。

たとえば、あるファイルに「i(immutable)」属性を付けると、そのファイルは削除も変更もできなくなります。rootユーザーですら一時的に変更できなくなるため、重要な設定ファイルなどの保護に役立ちます。

このように、chattrはファイルに対して追加的な安全策を講じるための便利なツールです。


chattrの基本構文

基本的な使い方は以下のとおりです。

chattr [オプション] [+/-/=][属性] ファイル名
  • +:属性を追加する
  • -:属性を削除する
  • =:指定した属性だけを設定し、他の属性をクリアする

たとえば、+iを付けるとimmutable属性(変更不可)を追加します。

sudo chattr +i important.conf

このコマンドを実行すると、important.confは読み取りはできますが、書き込み・削除・名前変更などが一切できなくなります。


よく使われる属性一覧

chattrで使える属性はいくつかありますが、特によく使うのは以下の3つです。

属性説明
iimmutable:変更・削除・リネームが禁止される
aappend only:追記のみ可能。上書きや削除はできない
eextents:ext4の拡張属性。通常は自動で設定される

i(immutable)属性

もっとも重要で使用頻度が高い属性です。設定するとファイルのあらゆる変更が禁止されます。

sudo chattr +i ファイル名

a(append only)属性

ログファイルなど、追記はしたいけれど過去の内容を消されたくない場合に便利です。

sudo chattr +a access.log

vinanoなどのエディタでは書き換えできなくなりますが、echocat >>を使った追記は可能です。


chattrの属性を確認するには?

ファイルに付与された属性を確認するには、lsattrコマンドを使います。

lsattr ファイル名

例:

lsattr important.conf

出力例:

----i--------e---- important.conf

このように、どの属性が設定されているかが一目で分かります。


chattrを使った実践例

1. 設定ファイルを保護する

誤って編集してしまうとシステムに影響が出るような設定ファイルには、+i属性を使って保護するのがおすすめです。

sudo chattr +i /etc/ssh/sshd_config

編集が必要なときだけ属性を解除して、終わったら再設定する運用が安全です。

sudo chattr -i /etc/ssh/sshd_config
# 編集作業
sudo chattr +i /etc/ssh/sshd_config

2. ログファイルへの追記だけを許可する

セキュリティ上、ログは保管しておきたいけれど、消されてしまっては困る…というときに便利なのが+a属性です。

sudo chattr +a /var/log/secure

この状態では、追記はできますが削除や編集は不可になります。


注意点と制限事項

  • chattrの属性操作にはroot権限が必要な場合があります。通常ユーザーでは変更できません。
  • 一部のファイルシステム(たとえばXFSやBtrfsなど)では、chattrが使えないことがあります。ext4ファイルシステムでの利用が前提です。
  • i属性を設定すると、パーミッションの変更すらできなくなります。操作前に必ず確認をしましょう。
  • 属性が付いたファイルをバックアップ・リストアする際は、属性ごと保持できるツール(rsynctarのオプション)を使うのがおすすめです。

chattrと組み合わせたいコマンド

  • lsattr:属性確認用
  • sudo:root権限で実行するために必要
  • alias:よく使う属性変更を簡略化する

例:

alias lock="sudo chattr +i"
alias unlock="sudo chattr -i"

これで、

lock important.txt

と打つだけでファイルを保護できます。


chattrが役立つシーンまとめ

  • システムの重要ファイルを誤操作から守りたい
  • ログファイルを追記専用にしたい
  • 一部のユーザーにファイルを見せつつ変更は許さない運用をしたい
  • 開発環境や運用環境で「削除禁止」「書き換え不可」の制限を設けたい

など、システム保守やセキュリティ対策において、chattrは大いに力を発揮します。

タイトルとURLをコピーしました