当启动代理运行我的.plist文件时,为什么我会遇到“文件的可疑所有权”错误?
-
16-10-2019 - |
题
我有一个配置为运行.plist文件的启动代理:例如: /Library/LaunchAgent/foo.plist
. 。在此.plist内部,它设置为在 LoginWindow
和 Aqua
.
当我尝试启动计算机并进入登录屏幕时,该PLIST应该运行,而是给出以下错误(在控制台中):
启动ctl:file的可疑所有权(跳过):/library/launchagents/foo.plist
当我尝试登录到非Admin帐户时,它会提供完全相同的错误消息。当我尝试使用管理员帐户登录时,它可以正常工作。
老实说,我对Mac OS X特权和权限不了解。
要创建文件,我将其打开 emacs
, , 和 sudo
在管理员帐户上(例如 su
命令由于另一个帐户没有sudo特权)然后保存。
我需要使用哪个帐户来创建该文件,以使其适用于所有用户?
我需要使用sudo命令吗?
我需要更改文件权限(例如使用 chmod
)?
是否有一种简单的方法来获取现有文件并更改其所有权而不是重新创建文件?
有人可以解释为什么会发生这个错误吗?
解决方案
如果PLIST由root用户除根以外的其他用户所有,那是一个安全问题。
您可以将所有者更改为扎根 sudo chown root <filename>
, 和更改权限 sudo chmod 644 <filename>
(4用于阅读访问,2用于写入访问,1用于执行访问,添加。第一个数字是为所有者,第二个数字,第三个是每个人的第三个。)
其他提示
来自 启动ctl(1) manpage的描述 load
子命令:
请注意,每个用户配置文件(启动器)必须由用户加载。所有系统范围内的守护程序(启动Daemons)必须由root拥有。配置文件一定不能组成或全世界。出于安全原因,这些限制是适当的,因为允许对启动配置文件的写入性允许人们指定将启动哪个可执行文件。
启动ct 有几条“怀疑……”消息。这 启动 10.6.7的代码(例如)在其中有三个这样的消息 launchctl.c
(请参阅功能 path_goodness_check
).
Dubious permissions on file (skipping): <pathname>
Dubious ownership on file (skipping): <pathname>
Dubious path. Not a regular file or directory (skipping): <pathname>
为避免这些消息,路径名必须为(#3)常规文件或目录1 (或一个符号链接)是(#1)由root或调用用户拥有的(#2)而不是“ group”或“其他”可写(即 chmod go-w
).
1没有命名的管道,块/角色特殊设备节点,本地域插座等。
您的文件可能是管理用户拥有的,因为您说在登录该用户时不会收到消息(在这种情况下,pathName由调用用户所有)。
为了使路径名适用于其他用户,应由root拥有。
为了安排这一点,请这样做:
sudo chown root /Library/LaunchAgent/foo.plist
感谢您的答案(将所有者更改为根) - 这就是我所需要的。
为了使这不仅仅是“我也是”的帖子……我是通过一条复杂的路径到达这里的:我得到了“只有在aqua会话中运行的过程才能使用abunageDaemon的流程来使用此API。寻找答案导致我 苹果关于守护程序和代理商的技术 这解释了如何解决“水上会议”错误,但这使我遇到了“可疑所有权”问题。这就是我到达这里的方式,在这里解决了最后的问题。
也许将所有这些添加到本讨论中会导致一些搜索引擎将此页面链接到预先效果问题之一,从而节省了一些未来的冒险家。
对于用户拥有的〜/library/laintyagent中的file,而不是root nond sudo,如果您必须更改所有权,因为您是从root用户加载它的
当人们不知道如何 sudo
作品。禁用用户拥有的文件上的服务,只需致电 launchtl
没有 sudo
.