WindowsNT和Linux的檔案許可權一個區別(轉)

ba發表於2007-08-12
WindowsNT和Linux的檔案許可權一個區別(轉)[@more@]   先說說大家熟悉的Windows,對於WindowsNT,只要你對某個檔案設定了所有人不可寫的安全屬性(也就是檔案許可權咯),無論在哪個資料夾中都是不可以刪除的,不管他所在的資料夾的安全屬性是什麼。
   當大家習慣了Windows的安全屬性設定後,形成一個觀念,檔案是否可以刪除是取決於這個檔案的安全屬性。我本來也有這個概念。
   然後我們來看看日益增多的Linux系統。我用的是RedHat和紅旗Linux,應該其他Linux也一樣。
   如果在Linux中有一個目錄假定為 share (許可權 drwxrwxrwx,即任何人完全控制),他的下面有一個檔案 amtr,假設這個檔案是某個使用者寫給root的一個message,他不想讓別人看到檔案的內容,於是把 amtr 的許可權設定為 -rw-------,這樣應該差不多了吧——如果另一個使用者在 share 目錄執行cat amtr就會顯示Permission denied(沒有許可權)。
   但是,如果另一個使用者在 share 目錄下執行 rm amtr,你說會有什麼結果——amtr不見了。更壞的,別的使用者可以任意改名。如執行 mv amtr rootTMD,呵呵,這樣root肯定會看。
   究其原因,是因為Linux把檔案的i-nod資訊全都交給了目錄管理。包括檔案存不存在、檔名是什麼、檔案存放在磁碟哪裡等資訊。只要你有這個目錄的寫許可權,就可以刪除目錄下的任意檔案(注:這裡的檔案不包括目錄)和更改目錄下的任意檔案的檔名(注:包括目錄)。
   特別的,對於目錄,如果你這個目錄只是一個空目錄的話,就相當於一個檔案,完全可以刪除。但是因為Linux不能刪除一個非空的目錄。只要你的目錄別人沒有權利寫且目錄內有別人沒有許可權寫的檔案,那就不能刪除你的目錄(執行 "rm -r 目錄名" 不是把目錄從當前目錄一點截斷,而是用遞迴逐個刪除目錄內容,所以沒辦法刪除),最多改個名字。
   大家應該可以看到/tmp的許可權是 drwxrwxrwt ,t的意思是隻有建立者可以修改。原來我以為這樣設的原因是不讓別人把tmp這個目錄給刪掉,把這個目錄設成 o+t 的原因還有不讓你刪除別人不給刪但是又在這個目錄下的東西。
   所以在Linux中要小心不要把你的重要檔案放在任何人完全控制的目錄裡。即使這個檔案的許可權是0。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-950684/,如需轉載,請註明出處,否則將追究法律責任。

相關文章