以非管理员身份运行未识别的开发者应用程序

以非管理员身份运行未识别的开发者应用程序

我习惯使用 Windows,但最近开始使用受限(无法运行来自未识别开发商的应用程序)的 OS X 机器,并想让它具备全部功能,而不必重新格式化、重置/重新创建管理员等。

我通过将文件放在我的用户帐户下的“程序”文件夹中来安装 MagicPrefs,它就可以运行,但 gedit 出现未识别的开发人员错误,甚至右键单击打开也需要管理员权限(我无法从“系统偏好设置”中关闭 Gatekeeper)

OS X 应用程序的便携版本可能是主要应用程序的解决方案。

答案1

为 Gatekeeper “自行签名”应用程序的唯一方法是加入 Apple 开发者计划(目前每年 100 美元)、注册代码签名证书并安装 XCode 来创建“您的”应用程序。

然后,您可以在 XCode 中创建一个应用程序,并只包含您要创建的另一个应用程序的内容真的想要在您的应用程序包中运行,请使用您的证书对其进行签名。此应用程序可以在任何地方启动(尽管您可能会违反原始软件的许可证)。

显然,这不是很实用。另一个答案中建议的将内容复制到另一个应用程序包的方法本身不会绕过 Gatekeeper。“已知开发者”检查要求应用程序包包含一个_CodeSignature子文件夹和一个与包文件中签名的开发者相对应的应用程序 ID Info.plist。如果您替换所有内容,这两者都将被销毁,而选择性替换内容将导致应用程序的代码签名与其声称的应用程序不匹配。

如果这种“移植”方法确实有效,那不是因为它欺骗了 Gatekeeper,而是因为它阻止了 Gatekeeper 被调用。无论应用程序包是否已签名,Gatekeeper 系统都只会检查“隔离”的应用程序。这意味着已向文件添加了扩展属性标志,表明它是从互联网下载的,还是从未知来源下载的。Safari 和 Mail 会将此标志添加到下载的文件中,但不要求所有应用程序都必须这样做。您可以通过ls -l@在包含应用程序包的目录上运行以下命令来查看此标志:

drwxr-xr-x@ 3 self  wheel      102 Jul  7  2013 My Sketchy App.app
    com.apple.quarantine         57 

如果您将一个应用程序的内容复制到另一个应用程序的软件包中,则新创建的应用程序将具有软件包之前具有的任何扩展属性。因此,如果它没有标志quarantine,您的新应用程序也不会有标志,您将能够启动它。但如果它做过有一个quarantine标志,它仍然会存在,并且 Gatekeeper 将有效。

移植应用程序内容只是删除此标志的一种迂回方法。您可以通过直接quarantine从应用程序中删除标志来完成相同的操作,如下所示:

xattr -d com.apple.quarantine "./My Sketchy App.app"

或者您可以quarantine通过在另一台 Mac(没有 Gatekeeper 限制或您有一个允许您覆盖它的管理员帐户)上启动/允许该应用程序来间接删除该标志,然后通过不重新创建标志的方法将其复制到受限机器(例如,从 SMB 共享复制的应用程序不会被隔离)。

长话短说:右键单击“打开”(或从“系统偏好设置”的安全屏幕中选择“仍然打开”)会为相关应用添加 Gatekeeper 例外,这需要管理员权限。quarantine从应用中删除该标志只需要对应用包具有写入权限,并阻止 Gatekeeper 介入。

答案2

选择您通常运行的应用程序,例如来自应用商店或互联网的应用程序。确保您有权更改它。为此,我建议下载一个简单的互联网应用程序,例如 Keka,并将其拖到您的桌面。

右击应用程序并选择“打开包内容”来复制应用程序。拖出应用程序的内容,并用来自未知开发者的应用程序内容填充空白的应用程序外壳。

系统将其读取为由已识别开发者创建的应用程序,您可以正常运行它。

答案3

  1. “右键单击”应用程序
  2. 点击“显示包装内容”
  3. 导航至“Contents/MacOS”
  4. 然后将可执行文件(“MacOS”文件夹中的内容)拉到 Terminal.app
  5. 最后按“Enter”(如果一切正常,应用程序将启动)

相关内容