削除できないディレクトリの作り方
〜 こんな小技もある 〜
2021-05-25 作成 福島
TOP > tips > cannotremove
共有ディレクトリは削除されたくない。
しかし、ディレクトリを削除不能にすると、その中のファイル操作 (追加・削除等) まで不能になってしまう。
それを避けるためここでは、中に削除できないファイルを作成することにより、共有ディレクトリの削除を不能にします。

0. 設定要件
項目内容備考
OSCentOS 7.6.1810手元で稼働中の Linux。まあ、どの Linux でも設定可能のはず。
消されたくないディレクトリ名/home/dir/-
消せないファイル名/home/dir/.cannotremove不可視属性なら気にならない。ファイル名は何でも良い。

1. ディレクトリと削除不能ファイルの作成
$ su
# mkdir /home/dir
# touch /home/dir/.cannotremove
# chattr +i /home/dir/.cannotremove     # chattr コマンドは root でしか実行できない。

# ls -l /home/dir/.cannotremove
-rw-r--r--. 1 root root 0 5月 25 22:17 /home/dir/.cannotremove
# lsattr /home/dir/.cannotremove
----i--------------- /home/dir/.cannotremove
i ビットが有効になった。
2. 削除不能の確認
# rm /home/dir/.cannotremove
削除不能
rm: '/home/dir/.cannotremove' を削除できません: 許可されていない操作です
# rmdir /home/dir
削除不能
rmdir: '/home/dir' を削除できません: ディレクトリは空ではありません
# rm -Rf /home/dir
削除不能
rm: '/home/dir/.cannotremove' を削除できません: 許可されていない操作です
3. ディレクトリの削除
# chattr -i /home/dir/.cannotremove
# lsattr /home/dir/.cannotremove
-------------------- /home/dir/.cannotremove
i ビットが無効になった。
# rm /home/dir/.cannotremove
# rmdir /home/dir

# exit
$