![例:](https://rvso.com/image/134426/%E4%BE%8B%EF%BC%9A.png)
ファイルの削除はファイル自体ではなく、そのファイルを含むディレクトリの権限に依存することはわかっています。例えばここを参照
しかし、空でないディレクトリの場合はどうでしょうか?rm -rf NON_EMPTY_DIR
ディレクトリ内のファイルを削除できないため、 の使用は失敗します。ディレクトリを空でなく、他のユーザーが書き込みできない状態にしておくことは、他のユーザーがフォルダを削除できないようにする安全な方法でしょうか?
例:
# Create write-all outer dir
mkdir outer
chmod 777 outer
# Create two subdirectories, one of which is empty, one not,
# and none are writable by anyone
mkdir outer/{non-,}empty
touch outer/non-empty/file
chmod 555 outer/*
ls -la outer
## drwxrwxrwx 4 user user 80 May 31 15:12 .
## [ .. does not matter here ]
## dr-xr-xr-x 2 user user 40 May 31 15:12 empty
## dr-xr-xr-x 2 user user 60 May 31 15:12 non-empty
rm -rf outer/empty
# Succeeds
rm -rf outer/non-empty
# rm: cannot remove outer/non-empty/file: Permission denied
答え1
削除することはできないかもしれませんが、名前を変更したり、別の場所に移動したりすることはできます。消えることはありませんが、消えたように見えます。
答え2
書き込み権限を持たずに、書き込み可能ディレクトリから空でないディレクトリを削除することはできますか?
いいえ。
ディレクトリを空にせず、他のユーザーが書き込みできないようにしておくことは、他のユーザーがフォルダを削除するのを防ぐ安全な方法でしょうか?
はい。
rmdir
空でないディレクトリでは動作しません。また、書き込みアクセス権がなければ、ディレクトリを空にする方法はありません。