Linux

Linux:作為其他和組刪除文件

  • November 3, 2022

這個問題應該被問一百萬次,但我找不到正常的答案。

使用者是組adm的成員

我以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

為什麼我不能刪除這些文件?

刪除和創建文件需要對包含該文件的目錄具有寫權限。

對於/,它由 擁有root,並且對組或其他人沒有“寫入”權限。因此root,無論文件的權限如何,都只能在那裡刪除文件。

$ ls -ld /
drwxr-xr-x 24 root root 4096 Nov  3 19:21 /

關於/tmp,此文件夾通常啟用了粘性位。請參閱Linux 權限:SUID、SGID 和粘性位

最後一個特殊許可被稱為“粘性位”。此權限不會影響單個文件。但是,在目錄級別,它限制了文件刪除。只有文件的所有者(和root)可以刪除該目錄中的文件。一個常見的例子是/tmp目錄:

[tcarrigan@server article_submissions]$ ls -ld /tmp/ 
drwxrwxrwt. 15 root root 4096 Sep 22 15:28 /tmp/

權限集由小寫的t表示,其中x通常表示執行權限。

引用自:https://unix.stackexchange.com/questions/723550