Chattr(属性の変更)は、ファイル属性を変更するために使用されるコマンドラインLinuxユーティリティです。 Linuxシステムのファイルに特定の属性を設定および設定解除して、rootユーザーとしてログインしている場合でも、重要なファイルやフォルダーを誤って削除または変更しないようにすることができます。
したがって、chattrコマンドを使用すると、ファイルが不変になります。つまり、ファイルやディレクトリを誤って削除するのを防ぐために使用されます。ファイルに対する完全な権限がある場合でも、chattr属性で保護されたファイルを削除することはできません。
これは、すべてのユーザー情報とパスワードを含むシャドウファイルやパスワードファイルなどのシステムファイルで非常に役立ちます。これらの属性は、ext2、ext3、またはext4ファイルシステムにあるファイルとディレクトリにのみ設定できます。
chattrコマンドと使用法の構文
以下は、chattrコマンドの構文です。
chattr [ -RVf ] [ -v version ] [ mode ] files...
chattrコマンドで使用できるファイル属性:
-
a
-ファイルは書き込み用に追加モードでのみ開くことができます。 -
A
-ファイルのatimeレコードは変更されません。これにより、ラップトップシステムで一定量のディスクI/Oが回避されます。 -
c
-ファイルはカーネルによってディスク上で自動的に圧縮されます。このファイルから読み取ると、非圧縮データが返されます。このファイルへの書き込みは、データをディスクに保存する前に圧縮します。 -
C
-ファイルはコピーオンライト更新の対象にはなりません。このフラグは、コピーオンライトを実行するファイルシステムでのみサポートされます。ディレクトリに「C」フラグが設定されている場合、ディレクトリには影響しません -
d
-ダンププログラムの実行時に、ファイルはバックアップの対象ではありません。 -
D
-ディレクトリが変更されると、変更はディスクに同期的に書き込まれます。これは、ファイルのサブセットに適用される「dirsync」マウントオプションと同等です。 -
i
-ファイルを変更、削除、または名前変更することはできません。このファイルへのリンクを作成することも、ファイルにデータを書き込むこともできません。この属性を設定またはクリアできるのはスーパーユーザーのみです。 -
j
-ファイルには、ファイル自体に書き込まれる前に、すべてのデータがext3またはext4ジャーナルに書き込まれます。 -
s
-ファイルが削除されると、そのブロックはゼロになり、ディスクに書き戻されます。 -
S
-ファイルが変更された場合、変更はディスクに同期的に書き込まれます。これは、ファイルのサブセットに適用される「同期」マウントオプションと同等です。 -
t
-ファイルは、他のファイルとマージされたファイルの最後に部分的なブロックフラグメントを持ちません -
T
-Orlovブロックアロケータの目的では、ディレクトリはディレクトリ階層の最上位と見なされます。 -
u
-ファイルが削除された場合、その内容が保存されるようにします。これにより、ユーザーは削除解除を要求できます
1)ファイル属性の設定方法(不変ビットの設定)
ファイル属性を設定するには、+
でchattrコマンドを使用します 演算子の後に属性名が続きます。
不変属性をファイルに設定する方法を例で確認してみましょう。ファイルの不変フラグを設定および削除できるのは、rootまたはsudo権限を持つユーザーのみです。
不変の属性を持つファイル:
- 変更、削除、名前変更はできません
- rootユーザーを含む誰もがソフトリンクまたはハードリンクを作成することはできません。
- ファイルにデータを書き込むことはできません
次のようにtouchコマンドを使用して空のファイルを作成しましょう:
$ touch file1
次に、lsattr
を使用してファイルの属性を一覧表示する方法を見てみましょう。 コマンド:
$ lsattr
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
-------------e-- ./file1
echoコマンドを使用してファイルにコンテンツを追加します:
$ echo "Test of i attribute" > file1
$ cat file1
Test of i attribute
これで、+i
を使用して不変の属性を設定できます ファイル(file1)にあります。
$ sudo chattr +i file1
$ lsattr
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
----i--------e-- ./file1
次のコマンドでは、通常のユーザーとsudoユーザー(root)の両方を使用して追加と削除を試みます。
$ echo "Try to edit after set i attribute" >> file1
-bash: file1: Permission denied
$ sudo echo "Try to edit after set i attribute" >> file1
-bash: file1: Permission denied
$ rm -f file1
rm: cannot remove 'file1': Operation not permitted
$ sudo rm -f file1
rm: cannot remove 'file1': Operation not permitted
何よりも操作が許可されていないことがわかります。
注: 重要なファイルは/etc/passwd
として保護できます または/etc/shadow
、偶発的な削除や改ざんからそれらを保護し、またユーザーアカウントの作成を無効にします。ただし、新しいシステムユーザーを作成しようとすると、「/ etc/passwdを開けません」というエラーメッセージが表示されます。パスワードを変更しようとすると、新しいパスワードの入力を求められますが、次回ログインするときに、新しいパスワードは有効ではないように見えるため、古いパスワードを使用してログインする必要があります。
2)ファイルの属性(未設定)を削除する方法
ファイルから属性を削除するには、-
を使用する必要があります 演算子の後に属性名が続きます。
次の例では、ファイル(file1)から不変属性の設定を解除しましょう。
$ sudo chattr -i file1
$ lsattr file1
-------------e-- ./file1
これで、ファイルに対してすべての通常の操作を実行できるようになります。
3)「i」属性でディレクトリを保護する方法
ディレクトリを保護するには、+
を使用して属性を再帰的に(-R)設定する必要があります オペレーター。
次のコマンドは、ディレクトリの不変ビット('linoxide')を再帰的に設定します。
$ sudo chattr -R +i linoxide/
$ lsattr -d linoxide
----i--------e-- linoxide/
設定を解除するには、-
を使用します 演算子の後にi
属性。
$ sudo chattr -R -i linoxide/
4)既存のデータを変更せずにファイルにデータを追加する
a
を使用して、すでに入力されているデータを変更または変更することなく、誰もがファイルにデータを追加できるようにすることができます。 属性。
つまり、既存のデータを変更せずに、現在のファイルにのみコンテンツを追加できます。
次の例では、ファイル(file2)に属性を追加します。
$ sudo chattr +a file2
6)ファイル属性を一覧表示する方法
ファイルまたはディレクトリの現在の属性を一覧表示するには、lsattrコマンドを使用する必要があります。次のコマンドは、現在のディレクトリ内のすべてのファイルとフォルダのファイル属性を一覧表示します。
$ lsattr
-------------e-- ./coreutils-8.22-18.el7.x86_64.rpm
-------------e-- ./pac
-------------e-- ./utils
-------------e-- ./linox
次のコマンドを使用して、シングルのファイル属性を確認できます。
$ lsattr coreutils-8.22-18.el7.x86_64.rpm
-------------e-- coreutils-8.22-18.el7.x86_64.rpm
ディレクトリの属性を確認するには、-d
を使用します オプション
$ lsattr -d test
-------------e-- test/
結論
これで、Linuxでchattrコマンドを使用してファイルとフォルダーを保護する方法がわかりました。このチュートリアルを楽しんでいただければ幸いです。以下のコメントセクションに提案を残してください。詳細については、manchattrを参照してください。