
當我使用時mkdir -pm 764 a/b/c
,只c
獲得了 764 權限,而a
具有b
預設權限。為什麼會這樣呢?為什麼不是所有目錄都取得764權限?
答案1
該mkdir
實用程式會建立一個目錄。當與它一起使用時,-m
會建立目錄並chmod
以給定的權限有效地在該目錄上運行(儘管這不會在兩個步驟中發生,這在某些情況下可能很重要)。
使用-p
,將建立任何尚不存在的中間目錄。給定的模式-m
仍然僅適用於路徑名中的姓氏,因為這是您要建立的目錄(建立中間目錄是為了允許使用給定模式建立該目錄)。
這POSIX 標準mkdir
假設每個中間目錄都應該使用 shell 的 umask 值的(S_IWUSR|S_IXUSR|~filemask)&0777
模式建立。filemask
在“應用程式使用”部分,它說
[...] 對於由 建立的中間路徑名稱元件
mkdir
,模式是預設修改的,u+ wx
以便無論檔案模式建立遮罩為何,都可以始終建立子目錄;如果中間目錄需要不同的最終權限,可以隨後使用 進行更改chmod
。
這表示中間目錄的模式設定為允許您建立可能沒有使用者寫入或執行權限的目錄。如果中間目錄也沒有被授予執行和/或寫入權限,則將無法建立目錄路徑的最後部分。
根據您的具體情況,使用
mkdir -p -m 764 a/b/c
chmod 764 a/b
chmod 764 a
如果您確定以前不存在任何目錄,請使用
mkdir -p -m 764 a/b/c
chmod -R 764 a