Linuxコマンド · 1 min read · Sep 15, 2025

初心者のためのLinux chattrコマンドチュートリアル(5つの例)

chattrコマンドは、Linuxにおいてファイルシステム上のファイル属性を変更するためのユーティリティです。このコマンドは、通常の権限では達成できない方法でファイルの動作を変更する属性を設定することにより、ファイルに対する制御を強化します。たとえば、chattrを使用すると、ファイルを不変にする「+i」属性を設定でき、これによりルートユーザーであってもファイルを変更、削除、または名前変更することができなくなります。他の属性には、「+a」があり、これによりファイルは追加モードでのみ開くことが許可され、「+u」はファイルの内容が削除されないように保存されることを保証します。これらの属性は、重要なシステムファイルを保護し、偶発的な削除を防ぎ、ファイルをより細かく管理するのに特に役立ちます。このコマンドはスーパーユーザー権限で実行する必要があり、通常はシステム管理者がLinuxファイルシステム内の重要なファイルのセキュリティと整合性を強化するために使用します。

多くの場合、Linuxコンピュータは異なるユーザーによって使用されるため、これらのユーザーが共通のファイルグループにアクセスする可能性があります。これにより、重要なファイルの偶発的な削除や編集といった問題が発生する可能性があり、管理者としては絶対に避けたいことです。

このチュートリアルでは、わかりやすい例をいくつか使ってこのツールを説明します。しかし、その前に、ここでのすべての例はUbuntu 24.04 LTSおよびDebian 12でテストされていることを述べておく必要があります。

Linux chattrコマンド

chattrコマンドは、Linuxファイルシステム上のファイル属性を変更するために使用されます。以下がその構文です:

chattr [ -RVf ] [ -v version ] [ mode ] files...

そして、manページには次のように記載されています:

       chattr changes the file attributes on a Linux file system.  

       The format of a symbolic mode is +-=[aAcCdDeijsStTu].  

       The  operator  '+'  causes  the  selected attributes to be added to the  
       existing attributes of the files; '-' causes them to  be  removed;  and  
       '=' causes them to be the only attributes that the files have.  

       The  letters  'aAcCdDeijsStTu' select the new attributes for the files:  
       append only (a), no atime updates (A), compressed (c), no copy on write  
       (C), no dump (d), synchronous directory updates (D), extent format (e),  
       immutable (i), data journalling (j), secure deletion  (s),  synchronous  
       updates  (S),  no tail-merging (t), top of directory hierarchy (T), and  
       undeletable (u).  

       The following attributes are read-only, and may be listed by  lsattr(1)  
       but  not  modified  by  chattr:  compression  error (E), huge file (h),  
       indexed directory (I), inline data (N), compression raw access (X), and  
       compressed dirty file (Z).  

       Not  all  flags  are supported or utilized by all filesystems; refer to  
       filesystem-specific man pages such as btrfs(5), ext4(5), and xfs(5) for  
       more filesystem-specific details.

以下は、chattrコマンドの動作を理解するのに役立つQ&A形式の例です。

Q1. chattrコマンドの使い方は?

ファイルを読み取り専用にしたいとします。そのためには、+iオプションとファイル名を入力としてchattrコマンドを実行します。

例えば:

chattr +i test.txt

次のスクリーンショットは、chattrを使用してファイルが読み取り専用になった後、他の操作が成功しなかったことを示しています。

chattrコマンドの使い方

注意:すでに観察しているように、chattrコマンドを使用するにはroot権限が必要です。

Q2. chattrによって課された読み取り専用制限を解除するには?

これは簡単です。+iの代わりに-iオプションを使用するだけです。例えば:

chattr -i test.txt

これで、-iオプションを使用して読み取り専用の制限が解除されたことがわかります。

Q3. ファイルに追加専用の権限を付与するには?

時には、ファイルに対して完全な制限を望まない場合があります。つまり、ユーザーにファイルへの追加専用アクセスを提供したい場合があり、新しい情報を追加できるが、既存の情報を削除または編集できないようにしたいのです。これは、+aオプションを使用してChattrを通じて実現可能です。

chattr +a test.txt

これで、ファイルに追加できるようになりましたが、既存の情報を編集したり、ファイルを削除したりすることはできません。この動作を逆転させるには、-aオプションを使用します。

chattr -a test.txt

Q4. chattrを使用してディレクトリ内のすべてのファイルに制限を適用するには?

これは、-Rフラグを使用して実行できます。これにより、ディレクトリとその内容の属性を再帰的に変更できます。たとえば、test-dirディレクトリ内のすべてのファイルを読み取り専用にしたい場合、次のようにchattrコマンドを使用します。

chattr -R +i ./test-dir/

次のスクリーンショットは、ディレクトリ内のすべてのファイルに読み取り専用の制限が正常に適用されたことを示しています。

Q5. ファイルに適用されたchattr属性を確認するには?

chattr属性が正常に適用されたかどうかを確認するために、ファイルを編集したり削除したりする操作を試みました。しかし、属性が適用されたかどうかを簡単に確認できる別のコマンドがあります。それがlsattrです。

lsattr [FILENAME]

たとえば、次のスクリーンショットは、lsattrの出力がディレクトリ内のすべてのファイルに「i」属性が適用されたことを明確に示しています。

再確認のために、-iオプションを使用した後の出力を示します。

上記のスクリーンショットに示されているように、すべてのファイルから読み取り専用属性が削除されました。

結論

システム管理者や一般的にLinuxマシンのユーザーを管理する場合、chattrは知っておくべきコマンドラインツールであることに同意するでしょう。このコマンドを効果的に使用することで、多くの手間を省くことができます。この記事は、このコマンドを始めるための十分な情報を提供するはずです。ここで説明した例を練習したら、ツールのmanページにアクセスしてさらに学んでください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。