在 OS X Yosemite 中设置 umask

Set umask in OS X Yosemite

我想更改 Mac 上的 umask。在 Yosemite 之前我使用了文件 /etc/launchd-user.conf 文件并添加了命令 umask 0077.

目的是在任何 GUI 程序中保存文件时获得适当的文件权限,例如Finder、Notes 和 Firefox。在/etc/profile~/.profile中添加umask并不能解决问题。

在 Yosemite 中,文件 /etc/launchd.conf/etc/launchd-user.conf 不再执行。 man launchctl 表示:

The /etc/launchd.conf file is no longer consulted for subcommands to run during early boot time; this functionality was removed for security considerations.

我尝试了使用 LaunchAgents 的不同示例。我可以设置环境变量(例如 ENVIRONMENT_RC),但从未设置 umask。

/etc/environment

#!/bin/sh

umask 0077

launchctl setenv ENVIRONMENT_RC "yes"     # Debugging

/Library/LaunchAgents/environment.user.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>environment.user</string>
    <key>ProgramArguments</key>
    <array>
            <string>/bin/sh</string>
            <string>/etc/environment</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>WatchPaths</key>
    <array>
        <string>/etc/environment</string>
    </array>
</dict>
</plist>

在 OS X Yosemite 中设置 umask 有什么想法吗?

谢谢,
雷托

状态报告

遗憾的是,到目前为止还没有关于这个问题的有效答案。但是不要紧。 Apple 支持也没有任何线索。他们说 OS X 中不再设置 umask。真可惜!

launchctl 中的 umask 子命令已消失,但仍有可能在 .plist 文件中设置关键字 "Umask"(例如在 /System/Library/LaunchDaemons/com 中使用)。 apple.configd.plist):

...
<plist version="1.0">
<dict>
...
    <key>Umask</key>
    <integer>18</integer>
</dict>
</plist>

我的计划是将此参数添加到启动用户上下文中第一个进程的 LaunchAgent 文件。

我随时通知你...

此致,
雷托

在OS X Yosemite 10.10.3:

中有一个最终的解决方案

而不是 /etc/launchctl-user.conf 使用: launchctl config user umask 002 (设置 775 权限的示例 umask)

而不是系统范围 /etc/launchctl.conf 使用: launchctl config system umask 002 (设置 775 权限的示例 umask)

Apple 五天前(2015 年 4 月 8 日)在此处发布了 "Yosemite umask problem" 更新的操作方法:https://support.apple.com/en-us/HT201684