1. 程式人生 > >Linux 目錄與文件權限分析

Linux 目錄與文件權限分析

line 那是 list tro 到你 什麽 打不開 利用 修改

  如果說在Java世界中,萬物皆對象,那麽在Linux世界中,可以說萬物皆文件。Linux文件一般分為兩種,一般文件和目錄文件。文件權限對於數據安全至關重要,有必要清楚的知道一般文件權限和目錄文件權限的意義。

  • 權限對文件的重要性

  文件是實際含有數據的地方,包括一般文本文件、數據庫內容檔、二進制可可執行文件(binary program)等等。 因此,權限對於文件來說,它的意義是這樣的:

   r (read):可讀取此一文件的實際內容,如讀取文本文件的文字內容等;

  w (write):可以編輯、新增或者是修改該文件的內容(但不含刪除該文件);

   x (eXecute):該文件具有可以被系統執行的權限。

  可讀(r)代表讀取文件內容比較好理解,那麽可執行(x)呢?因為在Windows下面一個文件是否具有執行的能力是借由“ 擴展名 ”來判斷的, 例如:.exe, .bat, .com 等等,在Linux下面,我們的文件是否能被執行,則是借由是否具有“x”這個權限來決定的!跟文件名是沒有絕對的關系的!至於最後一個w這個權限呢?當你對一個文件具有w權限時,你可以具有寫入/編輯/新增/修改文件的內容的權限, 但並不具備有刪除該文件本身的權限對於文件的rwx來說, 主要都是針對“文件的內容”而言,與文件文件名的存在與否沒有關系!因為文件記錄的是實際的數據!

  • 權限對目錄的重要性

  文件是存放實際數據的所在,那麽目錄主要是儲存啥玩意?目錄主要的內容在記錄文件名清單,文件名與目錄有強烈的關連! 所以如果是針對目錄時,那個 r, w, x 對目錄是什麽意義呢?

   r (read contents in directory):

  表示具有讀取目錄結構清單的權限,所以當你具有讀取(r)一個目錄的權限時,表示你可以查詢該目錄下的文件名數據。 所以你就可以利用 ls 這個指令將該目錄的內容列表顯示出來!

  w (modify contents of directory):

這個可寫入的權限對目錄來說,是很了不起的! 因為它表示你具有異動該目錄結構清單的權限,也就是下面這些權限:

    • 創建新的文件與目錄;
    • 刪除已經存在的文件與目錄(不論該文件的權限為何!)
    • 將已存在的文件或目錄進行更名;
    • 搬移該目錄內的文件、目錄位置。 總之,目錄的w權限就與該目錄下面的文件名異動有關就對了啦!

  x (access directory):

  那麽,目錄的執行權限有啥用途啊?目錄只是記錄文件名而已,總不能拿來執行吧?沒錯!目錄不可以被執行,目錄的x代表的是使用者能否進入該目錄成為工作目錄的用途!所謂的工作目錄(work directory)就是你目前所在的目錄啦!舉例來說,當你登陸Linux時, 你所在的主文件夾就是你當下的工作目錄。而變換目錄的指令是“cd”(changedirectory)!

  現在假設“文件是一堆文件數據夾”,所以你可能可以在上面寫/改一些數據。而“目錄是一堆抽屜”,因此你可以將數據夾分類放置到不同的抽屜去。 因此抽屜最大的目的是拿出/放入數據夾喔!現在讓我們匯整一下數據:

元件 內容       疊代物件 r w x
文件 詳細數據data 文件數據夾 讀取文件內容 修改文件內容 執行文件內容
目錄 文件名 可分類抽屜 讀到文件名 修改文件名 進入該目錄的權限(key)

 

  

  根據上面的分析,可以看到,對一般文件來說,rwx 主要是針對“文件的內容”來設計權限,對目錄來說,rwx則是針對“目錄內的文件名列表”來設計權限。 其中最有趣的大概就屬目錄的x 權限了!“文件名怎麽執行”?沒道理嘛!其實,這個 x 權限設計,就相當於“該目錄,也就是該抽屜的 "鑰匙" ”啦! 沒有鑰匙你怎麽能夠打開抽屜呢?對吧!

  • 具體實例

  例1:有個目錄的權限如下所示:

  drwxr--r-- 3 root root 4096 Jun 25 08:35 test

  系統有個帳號名稱為hah,這個帳號並沒有支持root群組,請問hah對這個目錄有何權限?是否可切換到此目錄中?答:hah對此目錄僅具有r的權限,因此hah可以查詢此目錄下的文件名列表。因為hah不具有x的權限,亦即 hah沒有這個抽屜的鑰匙啦! 因此hah並不能切換到此目錄內

  上面這個例題中因為hah具有r的權限,因為是r乍看之下好像就具有可以進入此目錄的權限,其實那是錯的。 能不能進入某一個目錄,只與該目錄的x權限有關啦!此外, 工作目錄對於指令的執行是非常重要的,如果你在某目錄下不具有x的權限, 那麽你就無法切換到該目錄下,也就無法執行該目錄下的任何指令,即使你具有該目錄的r或w的權限。

  例2:假設有個帳號名稱為xixi,他的主文件夾在/home/xixi/,xixi對此目錄具有[rwx]的權限。 若在此目錄下有個名為the_root.data的文件,該文件的權限如下:

  -rwx------ 1 root root 4365 Sep 19 23:20 the_root.data

  請問xixi對此文件的權限為何?可否刪除此文件?答:如上所示,由於xixi對此文件來說是“others”的身份,因此這個文件他無法讀、無法編輯也無法執行, 也就是說,他無法變動這個文件的內容就是了。但是由於這個文件在他的主文件夾下, 他在此目錄下具有rwx的完整權限,因此對於the_root.data這個“文件名”來說,他是能夠“刪除”的! 結論就是,xixi這個用戶能夠刪除the_root.data這個文件

  上述的例子解釋是這樣的,假設有個莫名其妙的人,拿著一個完全密封的數據夾放到你的辦公室抽屜中,因為完全密封你也打不開、看不到這個數據夾的內部數據(對文件來說,你沒有權限)。 但是因為這個數據夾是放在你的抽屜中,你當然可以拿出/放入任何數據在這個抽屜中(對目錄來說,你具有所有權限)。 所以,情況就是:你打開抽屜、拿出這個沒辦法看到的數據夾、將他丟到走廊上的垃圾桶!搞定了 (順利刪除!)!

Linux 目錄與文件權限分析