ウェブサイト検索

Linux で重要なファイルを IMMUTABLE (変更不可能) にする 5 つの「chattr」コマンド


chattr (属性変更) は、Linux システム内のファイルに特定の属性を設定または設定解除するために使用されるコマンド ライン Linux ユーティリティで、ログオンしている場合でも、重要なファイルやフォルダが誤って削除されたり変更されたりすることを防ぎます。 root ユーザーとしてログインします。

Linux ネイティブ ファイルシステム (ext2、ext3、ext4、btrfs など) ではすべてのフラグがサポートされますが、すべてのフラグがすべての非ネイティブ FS をサポートするわけではありません。 chattr コマンドで属性を設定すると、完全な権限を持っていても、ファイル/フォルダーを削除したり変更したりすることはできません。

これは、ユーザーの情報が含まれる passwd ファイルやシャドウ ファイルなどのシステム ファイルに属性を設定するのに非常に便利です。

chattr の構文
chattr [operator] [flags] [filename]
属性とフラグ

以下は、chattr コマンドを使用して設定/設定解除できる共通属性と関連フラグのリストです。

  1. ファイルが「A」属性セットでアクセスされた場合、その atime レコードは更新されません。
  2. ファイルが「S」属性セットで変更された場合、その変更はディスク上で同期的に更新されます。
  3. ファイルは「a」属性で設定されており、書き込みのために追加モードでのみ開くことができます。
  4. ファイルは「i」属性で設定されており、変更できません(不変)。つまり、名前変更、シンボリック リンクの作成、実行、書き込み可能はなく、スーパーユーザーのみが属性の設定を解除できます。
  5. j」属性を持つファイルが設定され、そのすべての情報がファイル自体に更新される前に ext3 ジャーナルに更新されます。
  6. ファイルは「t」属性で設定されており、末尾結合はありません。
  7. 属性「d」を持つファイルは、ダンプ プロセスの実行時にバックアップの候補ではなくなります。
  8. u」属性を持つファイルを削除すると、そのデータは保存されます。これにより、ユーザーは削除の取り消しを要求できるようになります。
オペレーター
  1. + : ファイルの既存の属性に属性を追加します。
  2. : ファイルの既存の属性から属性を削除します。
  3. = : ファイルが持つ既存の属性を保持します。

ここでは、ファイルとフォルダーの属性を設定/設定解除するための chattr コマンドの例をいくつか紹介します。

1. ファイルに属性を追加して削除から保護する方法

デモンストレーションの目的で、フォルダー demo とファイル important_file.conf をそれぞれ使用しました。属性を設定する前に、「ls -l」コマンドを使用して既存のファイルに属性が設定されていることを確認してください。結果をご覧になりましたか。現在、属性は設定されていません。

[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

chattr コマンドで属性を設定するには + 記号を使用し、設定を解除するには - 記号を使用します。そこで、+i フラグを使用してファイルに不変ビットを設定して、root ユーザーであってもファイルを削除する権限を持っていないユーザーがファイルを削除できないようにしましょう。

[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf

: 不変ビット +i はスーパーユーザー (つまり root) ユーザーのみが設定できるか、sudo 権限を持つユーザーが設定できます。 。

不変ビットを設定した後、コマンド「lsattr」を使用して属性を確認しましょう。

[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

ここで、強制的に削除したり、名前を変更したり、権限を変更しようとしましたが、「操作は許可されていません」と表示され許可されません。

[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. ファイルの属性の設定を解除する方法

上の例では、ファイルを保護し、誤って削除されないように属性を設定する方法を説明しました。この例では、アクセス許可をリセット (属性の設定を解除) し、< を使用してファイルを変更可能または変更可能にする方法を説明します。strong>- 私フラグ。

[root@tecmint tecmint]# chattr -i demo/ important_file.conf

権限をリセットした後、「lsattr」コマンドを使用してファイルの不変ステータスを確認します。

[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf

上記の結果では、「-i」フラグが削除されていることがわかります。これは、tecmint フォルダーにあるすべてのファイルとフォルダーを安全に削除できることを意味します。

[root@tecmint tecmint]# rm -rf *

[root@tecmint tecmint]# ls -l
total 0

3. /etc/passwd および /etc/shadow ファイルを保護する方法

ファイル /etc/passwd または /etc/shadow に immutable 属性を設定すると、ファイルが誤って削除されたり改ざんされたりすることがなくなり、ユーザー アカウントの作成も無効になります。

[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow

新しいシステム ユーザーを作成しようとすると、「/etc/passwd を開けません」というエラー メッセージが表示されます。

[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd

このようにして、重要なファイルまたはシステム構成ファイルに不変のアクセス許可を設定して、削除を防ぐことができます。

4. ファイル上の既存のデータを変更せずにデータを追加する

すでに入力されたデータを変更または変更せずに、全員がファイルにデータを追加することだけを許可したいとします。次のように 'a' 属性を使用できます。

[root@tecmint tecmint]# chattr +a example.txt

[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt

追加モードを設定すると、ファイルは追加モードでのみデータを書き込むために開くことができます。次のように追加属性の設定を解除できます。

[root@tecmint tecmint]# chattr -a example.txt

ここで、ファイル example.txt 上の既存のコンテンツを置き換えようとすると、「操作は許可されていません」というエラーが表示されます。

[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

次に、既存のファイル example.txt に新しいコンテンツを追加して確認してみます。

[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. ディレクトリを保護する方法

ディレクトリ全体とそのファイルを保護するには、フォルダのフルパスとともに「+i」フラグを指定した「-R」(再帰的)スイッチを使用します。

[root@tecmint tecmint]# chattr -R +i myfolder

recursively 属性を設定した後、フォルダーとそのファイルを削除してみます。

[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

権限の設定を解除するには、同じ「-R」(再帰的)スイッチと「-i」フラグをフォルダーのフルパスとともに使用します。

[root@tecmint tecmint]# chattr -R -i myfolder

それでおしまい! chattr コマンドの属性、フラグ、およびオプションの詳細については、マニュアル ページを使用してください。