有文件写权限,但无法删除文件
在使用Linux时,遇到文件可编辑,但无法删除的问题。下面重现问题:
使用root用户创建目录testdir,目录下创建文件testfile。给所有用户添加编辑权限。
[root@localhost ~]# mkdir /tmp/testdir
[root@localhost ~]# touch /tmp/testdir/testfile
[root@localhost ~]# chmod a+w /tmp/testdir/testfile
[root@localhost ~]# ls -al /tmp/testdir/testfile
-rw-rw-rw-. 1 root root 0 Feb 12 07:46 /tmp/testdir/testfile
切换用户song,尝试编辑testfile,发现可以正常编辑,读取。
[root@localhost ~]# su - song
Last login: Sun Feb 12 07:37:23 EST 2023 on pts/1
[song@localhost ~]$ echo "123" > /tmp/testdir/testfile
[song@localhost ~]$ cat /tmp/testdir/testfile
123
但是尝试删除文件时,提示没有权限。
[song@localhost ~]$ rm /tmp/testdir/testfile
rm: cannot remove ‘/tmp/testdir/testfile’: Permission denied
其实这和目录权限有关,查看目录权限发现用户song并没有编辑权限。
[song@localhost ~]$ ls -ald /tmp/testdir/
drwxr-xr-x. 2 root root 22 Feb 12 07:46 /tmp/testdir/
切换回root用户,给目录添加编辑权限。
[root@localhost ~]# chmod a+w /tmp/testdir/
[root@localhost ~]# ls -ald /tmp/testdir/
drwxrwxrwx. 2 root root 22 Feb 12 07:46 /tmp/testdir/
此时就可以顺利删除文件
[song@localhost ~]$ rm /tmp/testdir/testfile
[song@localhost ~]$ ls -al /tmp/testdir/testfile
ls: cannot access /tmp/testdir/testfile: No such file or directory
总结一下,删除文件需要所在目录的编辑权限。删除文件也可以视作修改目录。