2013-01-24 14 views
2

的過程就像下面root是一個文件,其所有者是root爲什麼我可以在我自己的目錄中刪除寫保護文件(硬鏈接)?

~$ ln root another_file 
~$ ls -l another_file 
-rw-r--r-- 2 root root 0 Jan 24 15:48 another_file 
~$ rm another_file 
rm: remove write-protected regular empty file `another_file'? y 
~$ ls -l another_file 

然而,這是不行的..

~$ ln root another_file 
~$ chmod a+w another_file 
chmod: changing permissions of `another_file': Operation not permitted 
+0

這個問題屬於serverfault –

回答

6

這是UNIX堅持的原則之一。這是完全沒問題的。原因很簡單,就是你對目錄本身有寫權限。這使您可以控制該目錄中包含的所有條目。否則你會遇到一個很大的問題。請注意,此規則不限於硬鏈接,而是限制在一般條目中。

+0

謝謝,但爲什麼我不能更改該文件的權限? –

+0

因爲它不是你的文件。它屬於根。您對該文件沒有寫入權限。這樣說:您有權控制文件的_existance_,因爲這是_your_目錄,並且節點存在位於目錄級別。但是你不能更改文件的任何_detail_,因爲這些細節是文件的一部分,而不是目錄級別。 – arkascha

+1

短語「包含在目錄中的節點」沒有很好的定義,因爲inode不存在於目錄中。如果'/ tmp/foo/bar'和'/ tmp/qux/baz'是指向同一個inode的鏈接,那麼inode包含哪個目錄? (也許我誤解了你對「節點」這個詞的使用。) –

相關問題