ファイルまたはディレクトリの属性を変更するには、chattr コマンドを使用します。次の表では、chattr コマンドのいくつかのオプションについて説明します。
オプション | 説明 |
---|---|
-R | ディレクトリとその内容の属性を再帰的に変更します。 |
-v {バージョン} | ファイルのバージョン番号を設定します。 |
+i | ファイルを読み取り専用または不変としてマークします。スーパーユーザー権限が必要です。 |
-i | ファイルの読み取り専用または不変の属性を削除します。スーパーユーザー権限が必要です。 |
chattr コマンドの構文は次のとおりです。
# chattr [-R] [-v {version}] [+-{attributes}] {file/directory names}
chattr コマンドの実行中に以下のエラーが発生した場合:
chattr: command not found
ディストリビューションの選択に従って、以下のパッケージをインストールできます:
分布 | コマンド |
---|---|
OS X | brew install e2fsprogs |
Debian | apt-get install e2fsprogs |
Ubuntu | apt-get install e2fsprogs |
アルパイン | apk add e2fsprogs |
Arch Linux | pacman -S e2fsprogs |
カリ Linux | apt-get install e2fsprogs |
CentOS | yum install e2fsprogs |
Fedora | dnf install e2fsprogs |
Raspbian | apt-get install e2fsprogs |
ファイルから -i (不変) 属性を削除する
「i」属性を削除するには、以下のコマンドを使用します。
# chattr -i geek.txt # Unset "i" attribute
属性を削除すると、権限セクションが空白になります。
# lsattr geek.txt --------------- geek.txt
chattr を使用してディレクトリを不変にする
では、chattr コマンドを使用して再帰的に属性を変更して、ディレクトリを保護してみましょう。ここに data という名前のディレクトリがあり、誰もがそのディレクトリに再帰的にフル アクセスできます。以下の出力例を参照してください。
# mkdir data # chmod -R 777 data/ # ls -l total 4 drwxrwxrwx. 2 root root 4096 Apr 24 04:25 data
属性をそのディレクトリに設定します。
# chattr +i data/ # lsattr ----i--------e- ./data
chattr で -R オプションを使用して属性を再帰的に設定することもできます。
# chattr -R +i data/
ディレクトリに属性を設定した後、ファイルを削除、移動、または作成しようとしましたが、そのいずれも許可されていないと確信しています。以下の出力例を参照してください。
# rmdir data/ # Deleting the Directory rmdir: failed to remove `data/': Operation not permitted
# rm -rf data/ # Deletiing the Directory Forcefully rm: cannot remove `data': Operation not permitted
# mv data/ mydata # Moving the Directory mv: cannot move `data/' to `mydata': Operation not permitted
# cd data/ # cat > test.txt # Creating a File in the directory bash: test.txt: Permission denied