410gone.click

©2021 sumomo-99

[Linux] ファイルに追記のみ許可(append only)する設定を追加する

更新日: 2021-04-11T07:17:08.224Z

Linux

ファイルに追記のみ許可(append only)する設定の方法を紹介します。
 
Linuxnのchattrコマンドでファイルに'a'属性を設定することで、追記のみ許可(append only)をすることができます。

chattr +a file

 
ファイルの属性を確認するには、lsattrコマンドを利用します。

lsattr file

 
追記のみ許可されたファイルには、以下のような特徴があります。

  1. 追記のみできる
  2. 上書きはできない
  3. ファイルの削除もできない

ファイルの上書きや削除は、root権限でも実行することはできません。
 
追記のみ許可したファイルは、ログファイルのように上書きや削除を禁止したい用途に利用できます。ただし、ファイルの削除もできないので、ファイルのローテーションを予定している場合は、ローテーション前に属性を削除するなどの手間が必要になります。
 
追記のみ許可の属性を削除するには、chattrコマンドで'-a'操作を行います。

chattr -a file

 
それでは、ファイルに追記のみ許可(append only)する設定を行っていきます。

$ # テスト用のファイルを作成し、初期のファイル属性を確認します。
$ touch appendOnlyFile.txt
$ lsattr appendOnlyFile.txt
--------------e---- appendOnlyFile.txt
$
$ # append onlyの属性フラグを追加します。一般ユーザーではエラーになります。
$ chattr +a appendOnlyFile.txt
chattr: 許可されていない操作です while setting flags on appendOnlyFile.txt
$
$ # root権限でappend onlyの属性フラグを設定します。
$ sudo chattr +a appendOnlyFile.txt
$
$ # ファイルの'a'属性が追加されたことを確認します。
$ lsattr appendOnlyFile.txt
-----a--------e---- appendOnlyFile.txt
$
$ # ファイルの上書きはエラーになります。
$ echo test01 > appendOnlyFile.txt
-bash: appendOnlyFile.txt: 許可されていない操作です
$
$ # ファイルの追記は行なえます。
$ echo test01 >> appendOnlyFile.txt
$ cat appendOnlyFile.txt
test01
$
$ # append only属性の付いたファイルは、削除もできません。
$ rm appendOnlyFile.txt
rm: 'appendOnlyFile.txt' を削除できません: 許可されていない操作です
$
$ # root権限でも削除できません。
$ sudo rm appendOnlyFile.txt
rm: 'appendOnlyFile.txt' を削除できません: 許可されていない操作です
$
$ # 削除をするには、append only属性を削除します。
$ sudo chattr -a appendOnlyFile.txt
$ lsattr appendOnlyFile.txt
--------------e---- appendOnlyFile.txt
$ rm appendOnlyFile.txt
$

 
以上、ファイルに追記のみ許可する設定を追加する方法の紹介でした。