在 macOS 中設定自定 umask

Mac 上的每個檔案或檔案夾都有一組權限。當您建立新的檔案或檔案夾時,其權限設定是由 umask 決定。

關於權限和 umask

以下說明適用於企業使用者。更改檔案權限和 umask 時,請務必謹慎。如果設定錯誤,將會導致 Mac 上檔案、檔案夾或 app 的安全性降低,也可能會使某些 app 無法運作。

權限

您儲存在 Mac 啟動磁碟或連接的卷宗上的每個檔案、檔案夾和 app,都具有權限設定。權限會決定哪些使用者帳號可以讀取、寫入或執行檔案、檔案夾或 app。這些權限包括 POSIX 權限和「連線權限控制列表」(ACL)。 

若要將使用者的 POSIX 權限設得較為嚴格或寬鬆,您可以調整權限的 umask 值。

umask

檔案的 POSIX 權限是以一組三位數的數字表示。在「終端機」中檢視權限時,可能會看到這樣的表示方式。每個數字都位於 0 與 7 之間。當您建立檔案時,系統會將預設值(通常檔案為 666,檔案夾為 777)減去 umask 值,藉此決定新檔案或新檔案夾的權限。

例如,若預設的 umask 值為 022,新檔案的權限就是 644,而新檔案夾的權限則是 755。擁有這些權限後,群組和其他使用者即可讀取檔案並開啟檔案夾,但只有持有人可以進行變更。 

請務必對 umask 有所瞭解之後,再繼續執行。如果 umask 設定錯誤,您可能會不慎失去檔案存取權限,或將權限授予其他使用者。詳情請參閱 chmod(1) 說明頁的 MODES 部分。

您可以在多個不同位置設定 umask。每個位置都會影響不同的 app。

macOS High Sierra、macOS Sierra、OS X El Capitan 和 OS X Yosemite 中使用者應用程式的 umask

請在 OS X Yosemite 10.10.3 和以上版本中,以管理者身分登入,並在「終端機」裡執行以下指令:

sudo launchctl config user umask nnn

nnn 換成您想要的 umask 值,例如 027 或 002。執行這個指令後,可能需要重新啟動 Mac。

這個指令會為使用者開啟的每個 app 設定 umask,例如 Finder、「文字編輯」或 Final Cut Pro,也會為他們透過命令列存取的每個 app 設定 umask。而這些 app 建立的新檔案,其權限的設定也是由這個指令控制。

如果您看到「無法寫入設定:沒有類似的檔案或目錄」這個訊息,請確定您有 /private/var/db/com.apple.xpc.launchd/config 檔案夾。如果找不到該檔案夾,請使用以下指令來建立:

sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config

建立這個檔案夾後,請再次執行 sudo launchctl config user umask nnn 指令。有關如何在 OS X Yosemite 中設定 umask,請執行 man launchctl 指令。

OS X Yosemite 中系統程序的 umask

請在 OS X Yosemite 10.10.3 和以上版本中,以管理者身分登入,並在「終端機」裡執行以下指令:

sudo launchctl config system umask nnn

nnn 換成您想要的 umask 值,例如 027 或 002。執行這個指令後,可能需要重新啟動 Mac。

這個指令會為使用者在系統環境中執行的每個背景服務程式設定 umask。極力建議您不要更改這個值,因為它可能會變更系統軟體所用檔案的權限。如果您將權限設得太過嚴格,所依賴的軟體可能會無法運作。如果權限設得太寬鬆,則可能會導致安全問題。

如果您看到「無法寫入設定:沒有類似的檔案或目錄」這個訊息,請確定您有 /private/var/db/com.apple.xpc.launchd/config 檔案夾。如果找不到該檔案夾,請使用以下指令來建立:

sudo mkdir -m 755 /private/var/db/com.apple.xpc.launchd/config

有關如何在 OS X Yosemite 中設定 umask,請執行 man launchctl 指令。

OS X Mavericks 和之前版本中使用者應用程式的 umask

在 OS X Mavericks 和之前版本中,建立一個包含 umask nnn 的 a /etc/launchd-user.conf 檔案。將 nnn 換成您想要的 umask 值,例如 027 或 002。這會為使用者開啟的每個 app 設定 umask,例如 Finder、「文字編輯」或 Final Cut Pro,也會控制這些 app 建立的新檔案上所設定的權限。

如果您是使用 OS X Lion,建議您更新至 OS X Lion 10.7.4 或以上版本。更新後,使用者 umask 將會套用到 Finder 中所建立的檔案和檔案夾。

OS X Mavericks 和之前版本中系統程序的 umask

在早於 Yosemite 的 OS X 版本中,建立一個包含 umask nnn 的 /etc/launchd.conf 檔案。將 nnn 換成您想要的 umask 值,例如 027 或 002。這會設定每個程序的 umask。極力建議您不要更改這個值,因為它會變更系統軟體所用檔案的權限。如果您將權限設得太過嚴格,所依賴的軟體可能會無法運作。如果權限設得太寬鬆,則可能會導致安全問題。

特定 LaunchAgent 或 LaunchDaemon 的 umask

在 Mac OS X 10.4 和以上版本中,進階使用者可以為特定的 LaunchAgent 或 LaunchDaemon 設定個別的 umask。設定時,他們要將 umask 值加入 launchd plist 檔案中。這個設定只會針對該程序,覆蓋 /etc/launchd.conf 或 /etc/launchd-user.conf 中的 umask 設定。若要進一步瞭解這個選項,請執行 man launchd.plist 指令。

發佈日期: