chattrコマンド【change attribute】
chattrコマンドとは?

Linuxでは、ファイルごとにアクセス権限を管理でき、所有者・グループ・その他のユーザーの3種類の対象について、読み取り・書き込み・実行の各権限の可否を設定できる。chattrコマンドはこれとは独立したレイヤーで動作し、たとえroot権限を持つ管理者であっても特定の操作を制限できる。
基本的な構文は「chattr [オプション] 属性 ファイル名」という形式で、属性の前に「+」を付けるとオンに、「-」を付けるとオフに変更する。「=」を用いると指定した属性のみに設定し直すことができる。例えば、「+i」でi属性を付与、「-i」でi属性を削除といった具合である。
設定できる属性は複数あり、用途に応じて使い分ける。「i」属性(immutable)を付与したファイルは、内容の変更や削除、名前の変更、ハードリンクの作成がすべて禁止される。重要な設定ファイルやシステムファイルの誤削除や改竄を防ぐ目的で利用される。
「a」属性(append only)を付与したファイルは既存データの変更、削除が禁止され、末尾への追記のみが許可される。ログファイルの過去の記録を書き換えられないようにする場合に活用される。そのほか、「d」(dumpコマンドによるバックアップ対象から除外)、「s」(削除時にゼロで上書きして復元を防止)、「A」(アクセス日時atimeを更新しない)、「S」(同期更新)、「D」(ディレクトリの同期更新)など多様な属性が存在する。
chattrコマンドはファイルシステムレベルで動作するため、すべての環境で利用できるわけではない。ext2やext3、ext4では広くサポートされているが、btrfsやXFSなどでは対応状況が異なる。属性の設定や解除にはroot権限が必要である。また、i属性を設定したままにするとシステムの更新やバックアップの際に障害となる場合があるため、実際の運用では設定内容の記録・管理が求められる。