阻止macOS上的特定应用


15

有没有办法阻止macOS上特定应用程序的列表?

我查找了诸如Cisdem之类的解决方案,但是我不喜欢它的工作方式上有一些漏洞。

  1. 除非您也阻止“活动监视器”,“终端”和“系统偏好设置”,否则您只需退出Cisdem流程或创建一个新用户即可解决该问题。
  2. 您必须阻止活动监视器,终端和系统偏好设置才能使其正常运行。

我想阻止某个应用程序在Mac上运行或什至无法安装。可以通过App Store和网络安装该应用程序。不知道如何去做。由于需要管理员权限,因此无法启用家长控制。

我要阻止的特定应用是Apple Configurator。

有任何想法吗?

Answers:


14

使用网闸控制对应用程序的访问

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

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

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

上面的命令会将Mail和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)。

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

这将防止任何人从App Store下载App并安装/运行它。

与管理员打交道/sudoers

如评论中所述,管理员可以执行的任何操作,另一个管理员可以撤消。使用spctl需要root,但是编辑sudoers文件以限制对特定命令的访问可以防止其他用户/管理员撤消您的更改。

请参阅如何防止sudo用户运行特定命令?有关如何在sudoers文件中配置“例外白名单”的详细信息。

例如,要允许用户Sam访问除以外的 所有命令spctl,您可以将sudoers文件放入:

sam ALL = ALL, !/usr/sbin/spctl

现在,这种“快速而肮脏的”方式阻止了访问,spctl但是最终却没有效果,因为如果另一个管理员明智地使用了您的策略,那么他/她要做的就是重命名命令并且他们可以访问。

sudoers手册页:

通常,如果用户使用sudo ALL,则没有什么可以阻止他们创建自己的程序,该程序为他们提供根shell(或制作shell的自己的副本),而不管任何`!'。用户规范中的元素。

要真正锁定它,您可能需要强迫其他用户su成为其他用户(即操作员),或者创建默认情况下阻止所有其他内容的允许命令白名单。但是,这很耗时,而且非常危险,因为您可以使人们无法使用关键功能。


真好!那正是我想要的。做得好。非常感谢!
帐篷制作'18

真棒的答案艾伦-我认为这不能阻止文件访问或停止发送sigkill信号-是吗?apple.stackexchange.com/questions/332124/...
bmike

@bmike-刚刚看到此评论。谢谢客气的话。至于sigkill,我认为您无法阻止,因为从技术上讲,您可以杀死自己的进程。
艾伦

2
这一切听起来不错,但对我来说根本不起作用(在10.14.3上)。所做的更改适用,但是我仍然可以启动被“拒绝”的应用程序。关守已启用。
BSUK

对我也不起作用(在10.14.1上)。
学生
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.