2021-05-12 14:32:11
Linux 目錄與檔案許可權簡述
如果說在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這個檔案!
上述的例子解釋是這樣的,假設有個莫名其妙的人,拿著一個完全密封的資料夾放到你的辦公室抽屜中,因為完全密封你也打不開、看不到這個資料夾的內部資料(對檔案來說,你沒有許可權)。 但是因為這個資料夾是放在你的抽屜中,你當然可以拿出/放入任何資料在這個抽屜中(對目錄來說,你具有所有許可權)。 所以,情況就是:你開啟抽屜、拿出這個沒辦法看到的資料夾、將他丟到走廊上的垃圾桶!搞定了 (順利刪除!)!
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-12/149133.htm
相關文章