这个问题应该被问一百万次,但我找不到正常的答案。
用户是群组成员管理员
我以root身份创建
# touch /tmp/keyboard-backlight.on
# chmod 666 /tmp/keyboard-backlight.on
# chgrp adm /tmp/keyboard-backlight.on
# chgrp adm /tmp/
# echo "text" > /test.txt
# chmod 0666 /test.txt
作为用户
user@host ~ $ rm /tmp/keyboard-backlight.on
rm: cannot remove '/tmp/keyboard-backlight.on': Operation not permitted
user@host ~ $ rm /test.txt
rm: cannot remove '/test.txt': Permission denied
为什么我无法删除该文件?
答案1
删除和创建文件需要包含该文件的目录的写权限。
对于/
,它属于root
,并且它对组或其他人没有“写”权限。因此只能root
删除那里的文件,而不管文件的权限如何。
$ ls -ld /
drwxr-xr-x 24 root root 4096 Nov 3 19:21 /
关于/tmp
,该文件夹通常启用粘滞位。看Linux 权限:SUID、SGID 和粘滞位:
最后一个特殊权限被称为“粘性位”。此权限不会影响单个文件。但是,在目录级别,它限制文件删除。只有所有者(和根) 文件可以删除该目录中的文件。一个常见的例子是
/tmp
目录:[tcarrigan@server article_submissions]$ ls -ld /tmp/ drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/
权限集用小写字母表示t,其中X通常会指示执行权限。