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


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

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

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

# chattr [operator] [flags] [filename]

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

  1. If a file is accessed with ‘A‘ attribute set, its atime record is not updated.
  2. If a file is modified with ‘S‘ attribute set, the changes are updates synchronously on the disk.
  3. A file is set with ‘a‘ attribute, can only be open in append mode for writing.
  4. A file is set with ‘i‘ attribute, cannot be modified (immutable). Means no renaming, no symbolic link creation, no execution, no writable, only superuser can unset the attribute.
  5. A file with the ‘j‘ attribute is set, all of its information updated to the ext3 journal before being updated to the file itself.
  6. A file is set with ‘t‘ attribute, no tail-merging.
  7. A file with the attribute ‘d‘, will no more candidate for backup when the dump process is run.
  8. When a file has ‘u‘ attribute is deleted, its data are saved. This enables the user to ask for its undeletion.
  1. + : Adds the attribute to the existing attribute of the files.
  2. : Removes the attribute to the existing attribute of the files.
  3. = : Keep the existing attributes that the files have.

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

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

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

[[email protected] 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ユーザーがファイルを削除する権限を持っていなくても、誰もがファイルを削除できないようにします。

[[email protected] tecmint]# chattr +i demo/
[[email protected] tecmint]# chattr +i important_file.conf

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

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

[[email protected] tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

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

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

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

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

[[email protected] tecmint]# chattr -i demo/ important_file.conf

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

[[email protected] tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf

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

[[email protected] tecmint]# rm -rf *

[[email protected] tecmint]# ls -l
total 0

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

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

[[email protected] tecmint]# chattr +i /etc/passwd
[[email protected] tecmint]# chattr +i /etc/shadow

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

[[email protected] tecmint]# useradd tecmint
useradd: cannot open /etc/passwd

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

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

すでに入力されているデータを変更または変更せずに、全員がファイルにデータを追加できるようにしたい場合は、次のように「a」属性を使用できます。

[[email protected] tecmint]# chattr +a example.txt

[[email protected] tecmint]# lsattr example.txt
-----a---------- example.txt

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

[[email protected] tecmint]# chattr -a example.txt

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

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

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

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

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

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

[[email protected] tecmint]# chattr -R +i myfolder

再帰的に属性を設定した後、フォルダとそのファイルを削除してみてください。

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

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

[[email protected] tecmint]# chattr -R -i myfolder

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

全著作権所有。 © Linux-Console.net • 2019-2022