Permissions

關於使用“mkdir -pm 764 a/b/c”創建的中間文件夾的權限

  • November 25, 2019

當我使用時mkdir -pm 764 a/b/c ,只c獲得了 764 權限,而a擁有b預設權限。為什麼會這樣?為什麼不是所有目錄都獲得 764 權限?

mkdir實用程序創建一個目錄。當與它一起使用時,-m它會創建目錄並chmod以給定的權限有效地在其上執行(儘管這不會分兩步發生,這在某些情況下可能很重要)。

使用-p,將創建任何尚不存在的中間目錄。給定的模式-m仍然僅適用於路徑名中的姓氏,因為這是您要創建的目錄(創建中間目錄是為了允許使用給定模式創建該目錄)。

POSIX 標准mkdir說每個中間目錄都應該使用 shell 的 umask 值所在的模式創建(S_IWUSR|S_IXUSR|~filemask)&0777filemask

在“應用程序使用”部分,它說

$$ … $$對於由 創建的中間路徑名組件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

引用自:https://unix.stackexchange.com/questions/554005