在 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
我想更改 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