假设您有权限写入文件但没有权限删除它 - 我们谈论什么权利?

假设您有权限写入文件但没有权限删除它 - 我们谈论什么权利?

假设您有写入文件的权限,但没有删除它的权限。

我们谈论什么权利?

读写权限?

答案1

要写入现有文件,您需要具有该文件的写权限。

要删除文件,您需要具有包含该文件的文件夹的写权限。

答案2

Florian 的回答在我的系统上并不十分完整:为了删除目录中的文件,我需要对该目录的写入和执行权限。

示例会话:

我正在运行一个使用 ext4 文件系统的 Debian。我创建了一个包含文件的目录,然后在尝试删除该文件之前更改了目录和文件的权限。

文件系统 ext4:

testuser@www:~$ df -T .
Filesystem     Type 1K-blocks     Used Available Use% Mounted on
/dev/sda3      ext4 152326340 44429904 100196624  31% /

让我们在其中创建一个目录和一个文件:

testuser@www:~$ mkdir d
testuser@www:~$ ls -ld d
drwxr-xr-x 2 testuser testuser 4096 May 21 16:19 d
testuser@www:~$ echo kjhkjh > d/f
testuser@www:~$ ls -l d/f
-rw-r--r-- 1 testuser testuser 7 May 21 16:19 d/f

预期:如果没有写入权限,则无法更改文件目录:

testuser@www:~$ chmod 100 d && ls -ld d
d--x------ 2 testuser testuser 4096 May 21 16:19 d
testuser@www:~$ rm d/f
rm: cannot remove 'd/f': Permission denied

意外:在没有执行权限的情况下无法更改文件目录:

testuser@www:~$ chmod 200 d && ls -ld d
d-w------- 2 testuser testuser 4096 May 21 16:19 d
testuser@www:~$ rm d/f
rm: cannot remove 'd/f': Permission denied

我需要对其具有写入和执行权限:

testuser@www:~$ chmod 300 d && ls -ld d
d-wx------ 2 testuser testuser 4096 May 21 16:19 d
testuser@www:~$ rm d/f

另外:当文件(但不是目录)被写保护时,rm删除前会请求权限。毕竟,删除文件可以被视为一种极端的写入方式。在文件没有其他硬链接的常见情况下,echo -n "" > d/f 数据丢失与删除之间没有区别。rm d/f

testuser@www:~$ !echo
echo kjhkjh > d/f
testuser@www:~$ chmod 700 d && ls -ld d
drwx------ 2 testuser testuser 4096 May 21 16:21 d
testuser@www:~$ chmod 000 d/f && ls -l d/f
---------- 1 testuser testuser 7 May 21 16:21 d/f
testuser@www:~$ rm d/f
rm: remove write-protected regular file 'd/f'? y
testuser@www:~$  ls -l d
total 0
testuser@www:~$

相关内容