1. 程式人生 > >[Linux]目錄許可權對檔案操作的影響

[Linux]目錄許可權對檔案操作的影響

問題

我們常使用linux以下命令

cd 進入目錄

ls 列出目錄中的檔案

或者直接開啟目錄中的檔案

以上操作對於目錄許可權位的設定來說,是有一定迷惑性的,如表格所示

  cd開啟目錄 ls列出檔案 操作目錄內檔案(讀/寫/執行)
r No No No
w No No No
x Yes No Yes

可以看見,當目錄只有讀取許可權的時候,是無法用cd開啟、ls列出或者操作目錄內的檔案的;

而事實上當目錄具備讀取許可權時,實際上是可以讀取到該目錄資訊,並且列出當前目錄的檔案的。

那麼,為什麼這裡無法用cd進入目錄呢?因為cd其實就是chdir,我們看看下面這段話對chdir行為的描述:

chdir函式用於改變當前工作目錄。呼叫引數是指向目錄的指標,呼叫程序需要有搜尋整個目錄的許可權。每個程序都具有一個當前工作目錄。在解析相對目錄引用時,該目錄是搜尋路徑的開始之處。如果呼叫程序更改了目錄,則它只對該程序有效,而不能影響呼叫它的那個程序。在退出程式時,shell還會返回開始時的那個工作目錄。

chdir實際上就是修改程序當前工作目錄從當前目錄改變到目標目錄,如果目標目錄不具備執行許可權就無法應用chdir函式;

實際上ls無法執行,和無法操作目錄內的檔案,也是因為這個原因,因為不具備執行許可權所以系統無法對該目錄應用搜索,也就定位不到該檔案,所以無法進行下一步操作,只能丟擲permission denied.