Answers:
您可以使用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
成为其他用户(即操作员),或者创建默认情况下阻止所有其他内容的允许命令白名单。但是,这很耗时,而且非常危险,因为您可以使人们无法使用关键功能。