Linux中許可權(r、w、x)對於目錄與檔案的意義以及Linux下access函式的用法
實習遇到需要檢測目錄的可用性, 這裡記錄一下Linux系統下r,w,x許可權對目錄和檔案的意義, 以前看unix環境高階程式設計的時候好像看過, 不過印象不深, 這裡記錄一下.
-
首先簡單介紹一下檔案的許可權, 在Linux下, 一切皆檔案, 當然也包括目錄, 這裡我們說下檔案, 先上個例子, 下面是我們該目錄下檔案的關係圖:
image.png
, 然後我們用ll指令列出該目錄下檔案的許可權, 如下圖所示:
image.png
image.png
我們可以看到, 在Linux下檔案的許可權有10位, 第一位代表的是檔案的型別, 如果是目錄的話就是d,也就是英文目錄的首字母, 如果只是普通檔案的話就是-, 如果是其他型別檔案的話還可能有其他的標誌, 這裡不具體介紹, 不過由於Linux下一切皆檔案, 所以型別還是蠻多的, 比如有l是符號連結檔案, 字元裝置是c, 塊裝置檔案是b, 其他不多介紹. 後來的幾位是共9位, usr, group, all各三位, 三位分別表示rwx, 也就是所謂的讀寫執行許可權,
-
許可權對目錄的意義
- 首先要明白的是目錄主要的內容是記錄檔名列表和子目錄列表,而不是實際存放資料的地方。
- r許可權:擁有此許可權表示可以讀取目錄結構列表,也就是說可以檢視目錄下的檔名和子目錄名,注意:僅僅指的是名字。
- w許可權:擁有此許可權表示具有更改該目錄結構列表的許可權,總之,目錄的w許可權與該目錄下的檔名或子目錄名的變動有關,注意:指的是名字。具體如下:
- 在該目錄下新建新的檔案或子目錄。
- 刪除該目錄下已經存在的檔案或子目錄(不論該檔案或子目錄的許可權如何),注意:這點很重要,使用者能否刪除一個檔案或目錄,看的是該使用者是否具有該檔案或目錄所在的目錄的w許可權。
- 將該目錄下已經存在的檔案或子目錄進行重新命名。
- 轉移該目錄內的檔案或子目錄的位置。
- x許可權:擁有目錄的x許可權表示使用者可以進入該目錄成為工作目錄,能不能進入一個目錄,只與該目錄的x許可權有關, 如果使用者對於某個目錄不具有x許可權,則無法切換到該目錄下,也就無法執行該目錄下的任何命令,即使具有該目錄的r許可權 。且如果使用者對於某目錄不具有x許可權,則該使用者不能查詢該目錄下的檔案的內容,注意: 指的是內容,如果有r 許可權是可以檢視該目錄下的檔名列表或子目錄列表的。所以要開放目錄給任何人瀏覽時,應該至少要給與r及x許可權 。
-
我們來做個簡單的測試來看看是不是這樣, 加深一下印象, 先是正常的訪問:
image.png
image.png
然後我們修改一下test目錄的許可權:
image.png
image.png
image.png
image.png
這個比較有趣的是我們可以看到test目錄下有什麼, 但是不知道這個檔案的任何別的資訊, 更進一步, 我們試試檢視這個檔案的資訊,
image.png
image.png
另外一種情況是如果有x許可權沒有r許可權會怎麼樣呢, 這個情況其實很簡單, 連讀的許可權都沒有的話,我們可以是無法知道這個檔案目錄下有什麼了, 但是注意的是我們可以進入這個目錄, 如果有w許可權的話, 我們也可以隨意建立檔案,甚至可以刪除所有檔案(壞笑).
這裡簡單總結一下, 對於目錄來說, r許可權指的是對目錄的讀許可權, 注意這裡的讀許可權是限於檔名的, 目錄下檔案的內容和其他相關資訊都是不屬於讀許可權管理的,寫許可權還是和我們之前寫的那樣, 如果想對目錄做出改變, 比如建立新的檔案目錄, 刪除檔案或者目錄, 都是受w許可權控制的, 如果希望進入該目錄下執行命令的話或者獲得該目錄下檔案相關資訊的話, 這就是x許可權控制的了.這裡其實w許可權比較明瞭, r和x許可權倒是比較容易弄混, 值得注意.
-
許可權對檔案的意義
這個比較簡單明瞭, 因為檔案是存放資料的地方, 所以許可權也都是和檔案相關的:
- r許可權:用於此許可權表示可以讀取此檔案的實際內容。
- w許可權:擁有此許可權表示可以編輯、新增或者是修改該檔案的內容。但是不包含刪除該檔案,因為由上面許可權對於目錄的意義得知刪除檔案或目錄的條件是什麼。
- x許可權:表示該檔案具有可以被系統執行的許可權。檔案是否能被執行就是由該許可權來決定的,跟檔名沒有絕對的關係。
-
access函式介紹
這個函式很簡單, 因為我們對一個目錄或者檔案的訪問許可權也就是由我們上面看到的訪問位實現的, 所以也就是將用函式實現命令列的功能而已.
這裡我也是參考一個部落格, 寫的很清晰, 所以下面直接就貼上來, Linux c函式access函式介紹
-
總結
到這裡就差不多了, 文章簡單介紹了Linux下檔案許可權相關的知識, 順便熟悉了一些Linux下的指令.