我的 Ubuntu 机器上的 ext4 文件系统上有一些文件夹,我不想在作为非 root 用户的正常操作过程中意外删除这些文件夹。我应该能够移动、创建或删除文件夹内的文件夹/文件
(root当然应该能够做他想做的任何事情,所以这仅适用于非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>
这意味着可以在其中创建新文件,但不能删除。