時々、私は自分のデータをまっすぐに誤って「SHIFT+DELETE」するとは思いません。さらに悪いことに、データを削除する前にデータをバックアップすることすらしていません。あなたが私のような人なら、ここにあなたにとって良いニュースがあります。 "chattr"と呼ばれる便利なコマンドラインユーティリティを知っています これは、Linuxでファイルやフォルダが誤って削除または変更されるのを防ぐために使用されます。
Chattr、 Chの略 アンジュ属性 ibuteは、Linuxシステムのファイルまたはフォルダーに特定の属性を適用/削除します。したがって、rootユーザーであっても、誤ってまたは意図的にファイルやフォルダを削除または変更することはできません。 。便利そうですね。確かに!
Chattrを使用してLinuxでファイルやフォルダを誤って削除または変更しないようにする
デフォルトでは、Chattrは多くのLinuxオペレーティングシステムにプリインストールされています。ですから、インストールについては気にしないでください。
chattrコマンドのデフォルトの構文は次のとおりです。
chattr [operator] [switch] [filename]
chattrには次の演算子があります:
- 演算子'
+
' 選択した属性がファイルの既存の属性に追加されます。 - 演算子'
-
' それらを削除します。 - 演算子'
=
' それらがファイルが持つ唯一の属性になります。
Chattrにはさまざまな属性があります-aAcCdDeijsStTu 。各文字は、以下に示すようにファイルに特定の属性を適用します。
- a -追加のみ
- A -時間の更新はありません
- c -圧縮、
- C -コピーオンライトなし
- d -ダンプなし
- D -同期ディレクトリの更新
- e -エクステントフォーマット、
- i -不変、
- j -データジャーナル、
- P -プロジェクト階層
- s -安全な削除、
- S -同期更新
- t -テールマージなし
- T -ディレクトリ階層の最上位
- u -削除できません。
このチュートリアルでは、2つの属性、つまり aの使用法について説明します。 、 i ファイルやフォルダの削除を防ぐために使用されます。
Linuxでファイルが誤って削除されないようにする
file.txt
というファイルを作成しましょう 私の現在のディレクトリにあります。
$ touch file.txt
または、
$ > file.txt
次に、 "i
を適用します " ファイルを不変にする属性。つまり、ファイルの所有者でありrootユーザーであっても、ファイルを削除したり変更したりすることはできません。
$ sudo chattr +i file.txt
次のコマンドを使用してファイル属性を確認できます:
$ lsattr file.txt
出力例:
----i---------e---- file.txt
次に、通常のユーザーとして、またはsudo権限を使用してファイルを削除してみてください。
$ rm file.txt
出力例:
rm: cannot remove 'file.txt': Operation not permitted
sudoコマンドを試してみましょう:
$ sudo rm file.txt
出力例:
rm: cannot remove 'file.txt': Operation not permitted
テキストファイルにいくつかの内容を追加してみましょう。
$ echo 'Hello World!' >> file.txt
出力例:
bash: file.txt: Operation not permitted
GUIモードでファイルマネージャからファイルを削除しようとしても、削除することはできません。
上記の出力でお気づきのように、rootユーザーであってもファイルを削除または変更することはできません。
属性を取り消すには、 "-i
を使用するだけです " 以下のように切り替えます。
$ sudo chattr -i file.txt
これで、不変属性が削除されました。これで、必要に応じてファイルを変更または削除できます。
$ echo 'Hello World!' >> file.txt
$ cat file.txt Hello World!
$ rm file.txt
同様に、次のセクションで説明するように、ディレクトリが誤って削除または変更されないように制限できます。
Linuxでフォルダが誤って削除および変更されないようにする
dir1
というディレクトリを作成します およびfile.txt
というファイル このディレクトリ内。
$ mkdir dir1 && touch dir1/file.txt
次に、次のコマンドを使用して、このディレクトリとその内容(file.txt)を不変にします。
$ sudo chattr -R +i dir1
どこで、
-
-R
-dir1とその内容を再帰的に不変にします。 -
+i
-ディレクトリを不変にします。
次に、通常のユーザーとして、またはsudoユーザーを使用してディレクトリを削除してみます。
$ rm -fr dir1
$ sudo rm -fr dir1
次の出力が得られます:
rm: cannot remove 'dir1/file.txt': Operation not permitted
「echo
」を使用してファイルにコンテンツを追加してみてください 「コマンド。できましたか?もちろんできませんでした!
属性を取り消すには、次を実行します:
$ sudo chattr -R -i dir1
これで、通常どおりこのディレクトリの内容を削除または変更できます。
ファイルやフォルダが誤って削除されるのを防ぎますが、Linuxでは追加操作を許可します
これで、ファイルやフォルダが誤って削除および変更されないようにする方法がわかりました。次に、ファイルとフォルダーが削除されないようにしますが、ファイルの書き込みは追加モードでのみ許可します。つまり、ファイル内の既存のデータを編集、変更したり、ファイルの名前を変更したり、ファイルを削除したりすることはできません。書き込み用にファイルを開くことができるのは、追加モードでのみです。
追加モードの属性をファイル/ディレクトリに設定するには、次のようにします。
ファイルの場合:
$ sudo chattr +a file.txt
ディレクトリの場合:
$ sudo chattr -R +a dir1
'a'属性が設定されたファイル/フォルダは、書き込み用に追加モードでのみ開くことができます。
ファイルにコンテンツを追加して、機能するかどうかを確認します。
$ echo 'Hello World!' >> file.txt
$ echo 'Hello World!' >> dir1/file.txt
catコマンドを使用してファイルの内容を確認します:
$ cat file.txt
$ cat dir1/file.txt
出力例:
Hello World!
ご覧のとおり、内容を追加することができます。これは、ファイルとフォルダを変更できることを意味します。
今すぐファイルまたはフォルダを削除してみましょう。
$ rm file.txt
出力:
rm: cannot remove 'file.txt': Operation not permitted
フォルダを削除してみましょう:
$ rm -fr dir1/
またはsudoで試してください:
$ sudo rm -fr dir1/
出力例:
rm: cannot remove 'dir1/file.txt': Operation not permitted
属性を削除するには、次のコマンドを実行します。
ファイルの場合:
$ sudo chattr -R -a file.txt
ディレクトリの場合:
$ sudo chattr -R -a dir1/
これで、通常どおりファイルとフォルダを削除または変更できます。
詳細については、manページを参照してください。
$ man chattr
まとめ
データのバックアップと保護は、Linuxシステム管理者の主な仕事の1つです。市場には多数の無料および商用のデータ保護ソフトウェアがあります。幸い、この組み込みツールを使用すると、誤って削除または変更されないようにデータを保護できます。 Chattrは、Linuxシステム内の重要なシステムファイルとデータを保護するための追加ツールとして使用できます。
推奨される読み物:
- Linuxでの偶発的な削除からファイルを保護する簡単な方法
- Linuxでの偶発的なシャットダウンまたは再起動を回避する方法