有什么方法可以阻止非管理员用户在 macOS 上执行“launchctl unload”?

有什么方法可以阻止非管理员用户在 macOS 上执行“launchctl unload”?

我开始使用 MacOS 上一个著名的自控程序 Cold Turkey。这个程序非常强大,但这还不够,因为我可以以非管理员用户身份打开终端并执行以下命令:

launchctl unload ~/Library/LaunchAgents/launchkeep.name-of-the-program.plist

问题很简单:我该如何阻止非管理员用户执行此操作?我在网上搜索了很多,但似乎只有部分解决方案。我可以“移动”.plist 文件到 LaunchDaemons 文件夹并进行一些调整吗?我试过这样做,但似乎不起作用。

我向 Cold Turkey 的开发者 Felix 询问是否有可能阻止 Mac 上的非管理员用户在不需要管理员权限的情况下执行此命令:

launchctl unload ~/Library/LaunchAgents/launchkeep.cold-turkey.plist

菲利克斯回答说,由于 macOS 的设计方式以及 Safari 扩展正常运行所需的必要权限,因此无法阻止这种情况。

还有希望吗?我不想停止使用该软件;它真的很好。你有什么想法吗?

答案1

您可以使用 守门人 (参数)。

有关其使用的示例,请参阅帖子 在 macOS 上阻止特定应用程序 答案是:

您可以使用spctl(Gatekeeper)创建已批准和未批准应用程序的列表。

例如,假设您想允许邮件但阻止 Chrome。

sudo spctl --add --label "ApprovedApps" /Applications/Mail.app 
sudo spctl --add --label "DeniedApps" /Applications/Chrome.app

上述命令将分别将邮件和 Chrome“标记”为“已批准”和“已拒绝”(您可以使用自己的描述符)。

现在,要启用/禁用应用程序,请发出以下命令:

sudo spctl --enable --label "ApprovedApps" 
sudo spctl --disable --label "DeniedApps" 

这样做的好处是,要将另一个应用程序添加到任一列表中,只需添加相应的标签:

sudo spctl --add --label "ApprovedApps" /Applications/Another.app

此外,您可以禁止 Mac App Store 的代码运行(可在spctl手册页 - [ man spctl][1] 中找到)。

spctl --disable --label "Mac App Store"

这将阻止任何人从应用商店下载应用程序并安装/运行它。

此限制不会影响管理员。

相关内容