Permissions
mv 文件沒有對源文件的寫權限
我剛剛意識到我可以移動一個我不擁有並且沒有寫權限的文件。我對該目錄有寫權限,所以我猜這就是我可以移動它的原因,但在這種情況下,是否有保護源文件的方法?
該文件的權限如下;
cgi-bin> ls -al drwxrwxrwx 3 voyager endeavor 512 Feb 1 10:45 . drwxrwxrwx 6 voyager endeavor 512 Feb 1 09:38 .. -rwxr-xr-x 1 voyager endeavor 22374 Feb 1 10:45 webvoyage_link.cgi cgi-bin> whoami moorc cgi-bin> groups lrsn endeavor cgi-bin> rm webvoyage_link.cgi rm: webvoyage_link.cgi: override protection 755 (yes/no)? yes
最後一個對我來說是一個很大的驚喜。如何刪除我無權訪問的文件。顯然我缺少一些東西。
就權限而言,移動 (
mv
) 本質上是一個保留屬性的副本,然後是刪除 ( )。1 取消連結或刪除文件意味著從其包含目錄中刪除其目錄條目。您正在寫入目錄,而不是文件本身,因此文件不需要寫入權限。rm
大多數係統都支持目錄 ( ) 上的粘性位的語義
chmod +t dir/
,當設置時,它只允許文件所有者刪除該目錄中的文件。設置粘性位cgi-bin/
意味著moorc
不能再取消連結cgi-bin
屬於voyager
.1 通常,當目標與源在同一文件系統中時,沒有物理副本。相反,對目標目錄中的文件進行了新連結,但同樣的一般概念仍然認為文件本身不會改變。
如需更多閱讀,請查看這篇文章,解釋文件和目錄權限(包括粘性位)如何影響系統呼叫。 後記
在@JorgWMittag對本網站另一個問題的評論中,我遇到了一個我非常喜歡的有趣類比。
摘抄
它與實際的“現實生活”目錄的工作方式相同,這就是為什麼它被稱為“目錄”,而不是例如“文件夾”,它的行為會完全不同。如果我想從我的電話簿中刪除某人,我不會去她家殺了她,我只是拿筆在她的號碼上劃掉。IOW:我需要對目錄的寫訪問權,而對她沒有訪問權。
如果您嘗試擴展該類比,則該類比確實會有些混亂,因為沒有有效的方法來描述文件系統實現在指向文件的目錄條目數降至零並且所有文件都打開時自動釋放文件的磁碟塊的情況搖桿關閉。