linux是一個安全的操作系統,她是以文件為基礎而設計的,其文件權限是比較復雜的,可以用stat命令以及lsattr命令來顯示某個文件的詳細信息:
可以看到,文件權限的含義是比較廣的,先來看-rwxr-xr-x,第一位是文件的類型,它定義了用戶只能某種方式來操作文件,后面九位是文件的存取控制信息,linux的文件許可機制將用戶分為三類:文件屬主u(user)、文件屬組g(group)和其它用戶o(other)。三類不同的用戶可以對文件擁有三種不同級別的權限:讀r(read)、寫w(write)和運行x(execute)。于是形成了九位的權限信息,分為三組,分別對應u,g, o。除此之外,用戶還可以設置setuid與setgid位來改變程序的執行身份。用lsattr命令則可以看到文件的屬性,控制位包括 asacddiijsttu,這些也是能控制文件的存取的。
由于篇幅有限,不可能就這些一一進行分析,本文著力分析文件權限中w(write)的真正含義,挖出其背后隱藏的細節,力圖使讀者能正確用好這個關鍵的權限位,不至于在系統管理中出現差漏。
為了能更直觀的說明問題,本文采用實驗操作的方式,一步一步的進行分析。為了簡化操作,我們用o(other)這組權限來做實驗。實驗中用到的權限位均屬于o(other), 進行操作的用戶均非root用戶,屬于o(other)。
在實驗之前,必須澄清一個概念,目錄也是一種文件,它主要包括了兩方面的信息,該目錄下文件的文件名稱與文件inode編號,它們之間有一一對應的關系。不過目錄文件比較特殊,不能用常規的方法進行讀寫,必須用系統的專用命令來操作。命令ls其實是對目錄文件進行讀操作,命令mv,rm則是對目錄文件進行寫操作。
好了,該說說w(write)的真正含義了,一句話,linux文件權限中的w是對該文件的*內容*進行限定。下面的實驗可以驗證。
實驗1, 目錄文件: /test(rwx), 普通文件: /test/file(r--). 當前目錄:/test
linux是一個安全的操作系統,她是以文件為基礎而設計的,其文件權限是比較復雜的,可以用stat命令以及lsattr命令來顯示某個文件的詳細信息:
試圖對file的內容進行改寫, 但file的權限是只讀,很顯然,操作失敗。
linux是一個安全的操作系統,她是以文件為基礎而設計的,其文件權限是比較復雜的,可以用stat命令以及lsattr命令來顯示某個文件的詳細信息:
沒有問題, 可以讀出file的內容。
linux是一個安全的操作系統,她是以文件為基礎而設計的,其文件權限是比較復雜的,可以用stat命令以及lsattr命令來顯示某個文件的詳細信息:
這是怎么回事呢, file的權限明明是只讀啊, 請注意, 前面提到了, 文件中的rw權限只是針對當前文件的內容進行限定, 文件名不屬于當前文件的內容, 它是保存在上一級的目錄文件的內容中。而mv命令表面上是針對file的,其實是對/test的內容進行改寫,再看看/test的權限, 是可寫的(rwx)。許多用戶為了保護文件,將其權限設成只讀就不管了,這是非常危險的,誠然,可以達到保護文件內容的目的(其實也未必,補充內容中有論述),但你卻不能保證文件是否會被更名或被刪除,保險的方法是將文件父目錄的權限也設為只讀。當然,也有其他的方法,比如用chattr +i命令或將文件系統用ro方式掛載等等,但這些不在本文論述范圍。
linux是一個安全的操作系統,她是以文件為基礎而設計的,
新聞熱點
疑難解答