私のUbuntuシステムのext4ファイルシステムには、root以外のユーザーとして、通常の操作中に誤って削除したくないフォルダがいくつかあります。フォルダ内のフォルダ/ファイルを移動、作成、または削除できる必要があります。
(もちろん、ルートは必要なものは何でもできる必要があるため、これはルートではなくユーザーにのみ適用されます)
これを行う必要がある場合は、rootとして実行できます。
答え1
一般ユーザーに削除したくないディレクトリの親ディレクトリへの書き込みアクセス権がないこと、およびユーザーにディレクトリ自体への書き込みアクセス権があることを確認します。このように:
$ tree -pu
.
└── [drwxr-xr-x root ] testDir
└── [drwxrwxrwx user ] subDir
上記のように、ディレクトリtestDir
はそのディレクトリに属し、書き込み権限のみを持ちroot
ます。root
ディレクトリtestDir/subDir
は私のユーザーのもので、誰もがディレクトリへのフルアクセス権を持っています。つまり、ここから自由にファイルを作成して削除できます。
$ touch testDir/subDir/file
$ echo "hello World" > testDir/subDir/file2
$ ls -l testDir/subDir/
total 4
-rw-r--r-- 1 terdon terdon 0 May 1 17:56 file
-rw-r--r-- 1 terdon terdon 12 May 1 17:57 file2
$ rm testDir/subDir/file
$ ls -l testDir/subDir/
total 4
-rw-r--r-- 1 terdon terdon 12 May 1 17:57 file2
ただし、ディレクトリ自体を削除することはできません。
$ rm -r testDir/subDir
rm: cannot remove 'testDir/subDir': Permission denied
空でも動作しません。
$ rm testDir/subDir/*
$ rmdir testDir/subDir/
rmdir: failed to remove 'testDir/subDir/': Permission denied
答え2
ディレクトリを追加専用として表示できます。chattr +a <dir>
つまり、そのディレクトリに新しいファイルを作成できますが、削除することはできません。