Mac根本无法管理开机启动项

设置-用户于群组-登陆项 里面根本没有项目,开机启动项全部要自己到/Library/LaunchAgents/和/Library/LaunchDaemons/这种地方找,然后还修改不了

“xxx.plist” is locked for editing and you may not be able to save your changes. Do you want to unlock it?

The file “xxx.plist” could not be unlocked.

Could not add write permission to the parent folder because you do not own it. Try modifying the permissions of the folder in the Finder or Terminal.

然后去“显示简介”里面“共享与权限”里面全部改成“读与写”,还是不行,我就是想管理一下开机启动项,有这么难吗???


MacBook, macOS 10.15

发布日期 2020年12月17日 上午7:41

回复
问题被标记为 排名最靠前的回复

发布日期 2020年12月21日 下午8:02

其实是这样的,编辑 LaunchAgents plist 的正确方法并不是你所描述的那样,而我描述的是一种可行方法而已,其它的如还有编程,或者专用软件等。不是每个 macOS 功能都是面向所有人的,就如同编程一样,绝大多数的编程语言也不是自然语言那样的直白。


Launchd 只是 macOS 系统的一个管理系统和用户启动服务的一个机制而已,它提供给第三方软件接口,第三方可以使用这个机制达到自己的目的。它没有提供直观的 app 给普通用户使用管理,因为这个机制不是为普通用户设计的。另外的一个类似运行机制就是用户的启动项,它对用户来说,界面和操作更友好而已。


简单说,文件权限和用户权限特性是有其历史渊源的,就如同要求“用户+密码”登录一样,毋庸置疑它能提供一定的安全性。


回到你的初衷,如果只是想禁止一个 LaunchAgent 项,其实很简单,把它移动走或者删除就可以,没必要非得修改。在 Finder(访达)中,就可以删除它。

回复量: 7
问题被标记为 排名最靠前的回复

2020年12月21日 下午8:02 回应 啊咪咪小熊

其实是这样的,编辑 LaunchAgents plist 的正确方法并不是你所描述的那样,而我描述的是一种可行方法而已,其它的如还有编程,或者专用软件等。不是每个 macOS 功能都是面向所有人的,就如同编程一样,绝大多数的编程语言也不是自然语言那样的直白。


Launchd 只是 macOS 系统的一个管理系统和用户启动服务的一个机制而已,它提供给第三方软件接口,第三方可以使用这个机制达到自己的目的。它没有提供直观的 app 给普通用户使用管理,因为这个机制不是为普通用户设计的。另外的一个类似运行机制就是用户的启动项,它对用户来说,界面和操作更友好而已。


简单说,文件权限和用户权限特性是有其历史渊源的,就如同要求“用户+密码”登录一样,毋庸置疑它能提供一定的安全性。


回到你的初衷,如果只是想禁止一个 LaunchAgent 项,其实很简单,把它移动走或者删除就可以,没必要非得修改。在 Finder(访达)中,就可以删除它。

2021年2月1日 下午10:10 回应 啊咪咪小熊

啊咪咪小熊,Sariel 和 tonyfromcalgary,大家好


感谢大家来到 Apple 支持社区!


非常高兴看到大家针对啊咪咪小熊的提问分享了各自的想法,并提供了一些处理方案。相信大家的讨论对其他遇到类似问题的用户也会非常有所帮助!也非常感谢大家在社区中保持良好的沟通,互相帮助并交流经验。 


希望大家能继续使用并积极探索 Apple 支持社区!


谢谢!

2020年12月17日 下午7:58 回应 啊咪咪小熊

这个困难一些,是有其道理的。 如果任何人,上来都可以修改,那你会感到它安全可靠吗。其实,现在macOS的很多功能的改进都与安全相关,持续增强安全性是任何一个操作系统不断进步的重要目标之一。


言归正传,如果了解 类UNIX 的 POSIX 权限,可以看出 /Library/LaunchAgents 和 /Library/LaunchDaemons 的目录权限,owner和group分别是root和wheel,只有owner是可读写运行,其他只是可读可运行。其中,每个plist,也是“基本”继承了目录权限。


而且,launchd要求,所有的全局的plist文件的属性是必须owner是root,(用户级的 ~/Library/LaunchAgents 是另外一回事)而且group和others不能有写操作,也就是最多是644或者444。这样你把它们的权限改变了,会有后续影响,需要改回来。用 sudo chmod 就可以了。


其次,说修改。要用 root 用户,而不是任何一个管理员用户。最好的方法就是用命令行,使用 sudo 或者切换到 root 在进行操作。


然后,普通对 plist 的操作,用 /usr/bin/defaults 命令是最方便的了,复杂的可以用 /usr/libexec/PlistBuddy 方便。这要看习惯。


最后,修改完了之后,看修改的情况和plist的性质,用 launchctl 的 stop/start 或者 unload/load 可以使其立刻生效,或者干脆重启。


另外,应该不用关闭SIP,如果需要就先关闭,操作完后立刻打开SIP。


这里只能简单说几个重点,很多技术细节无法涉及到。如果需要,可以参考下面的资料:

    1. 命令行:man launchd
    2. 命令行:man launchd.plist
    3. 命令行:man launchctl
    4. Daemons and Services Programming Guide
    5. 中文资料:电子工业出版社 荣誉出品的《OS X系统管理与部署


我可能会从我的建议或链接得到财务,或者其它形式的补偿 

[经过版主编辑]

2020年12月21日 下午5:04 回应 tonyfromcalgary

我不知道你是不是官方人员,但我一定要反应:

1.我没有想修改系统的启动项,只是一些第三方软件的启动项,根本没有必要做得这么困难,何况在第三方软件添加启动项的时候我只是点了同意而已,而关闭这个启动项却要这么复杂,这合理吗?

2.就算要困难一些,在设置的登陆项里面找不到,要去找plist文件去修改已经够复杂了,而且修改plist文件的读写权限也需要用户密码,而命令行也没有困难多少,也是需要用户密码,根本谈不上增加安全性,只是画蛇添足

3.我要修改plist文件,你提示我要去修改权限,我修改权限之后你没有提示失败,但还是打不开,我不管你内部机理是什么,这个操用户体检极差。如果不能直接这样修改权限,你就提示修改失败,最好再提示我需要用命令行修改,不是每一个用户都是专家,要考虑到更多普通用户的用户体验


[经过版主编辑]

这个主题已被系统或社区团队关闭。 你可以为你认为有帮助的任何帖子投票,也可以在社区中搜索其他答案。

Mac根本无法管理开机启动项

欢迎来到 Apple 支持社区
Apple 客户在其产品方面互相帮助的论坛。使用您的 Apple 帐户开始畅游其中吧!!