无法在macOS v11(Big Sur)中运行应用程序,因为权限不足。

162
我昨天安装了macOS v11(Big Sur),自那以后,我无法运行一些旧的应用程序。这是我收到的消息:
“您没有权限打开该应用程序。”
我认为这个应用程序来自一个未知的开发者。
我尝试了在macOS v10.15(Catalina)中有效的不同方法,比如:
spctl --master-disable

我尝试禁用SIP和AMFI。

我还尝试了:

sudo xattr -rd com.apple.quarantine /Applications/my_app.app

如果我从终端运行应用程序,这是我得到的错误的文本版本:
“由于意外原因,应用程序无法打开,错误=Error Domain=NSOSStatusErrorDomain Code=-10826“kLSNoLaunchPermissionErr: User doesn't have permission to launch the app (managed networks)”UserInfo={_LSFunction=_LSLaunchWithRunningboard, _LSLine=2508, NSUnderlyingError=0x7fcb24c13ec0 {Error Domain=RBSRequestErrorDomain Code=5 “Launched process exited during launch.” UserInfo={NSLocalizedFailureReason=Launched process exited during launch.}}}
还尝试禁用加密并运行:
csrutil authenticated-root disable

这是错误窗口:

Enter image description here


请分享一些你尝试运行但没有成功的应用程序。 - DeejonZ
7
如果您通过浏览器下载的Big Sur被发送到隔离区,请运行以下命令以禁用:sudo xattr -dr com.apple.quarantine /path/to/app,然后正常打开应用程序。希望这可以解决您的问题。 - Damon Abdiel
这对我有效。 - Krushna
所有使用 codesign 的解决方案,请查看 @eskimo 在此处的答案:您没有权限打开应用程序“Eclipse”。 - Ricardo
似乎,如果您以访客用户身份登录,则需要下载并打开一个应用程序。 - Anurag Sharma
11个回答

199

我遇到了"Termination Reason: Namespace CODESIGNING, Code 0x1"的错误问题,在重新签署应用程序之后,我通过以下命令成功打开了应用:

codesign --force --deep --sign - /Applications/AppName.app

没有其他解决方案适用于我。


15
这是唯一对我有效的方法。所有其他答案都假定这实际上是一个权限问题,但问题在于Big Sur不允许运行未经签名的应用程序(即使在系统偏好设置中打开了该选项)。 - hsnee
3
这应该是被接受的答案。这也是唯一对我有用的东西。 - cstrouse
1
这对我也起作用了。但是如果我想与他人分享我的未签名的.app文件,那么在这种情况下需要做什么?有人可以就此提供建议吗?感谢@AlinNereid。 - Ravindra Kumar Sonkar
1
哎呀!在尝试了互联网上发布的所有解决方法之后,这个终于奏效了。请 Apple 不要破坏正常运行的应用程序。 - chhantyal
7
这应该是被采纳的答案。在DBeaver应用程序上它对我起了作用。 - Bharath Ram
显示剩余11条评论

59

看起来是您将一个文件夹深度移动到应用程序目录中时出现了权限问题。

打开终端或iTerm并键入“chmod -R 755”,然后将.app拖放到窗口中,这会在终端或iTerm中带入完整路径。

它看起来像这样:

chmod -R 755 Path\ to\ app\ file.app

按回车键

然后,您可以正常打开应用程序文件,但会失败,因为Gatekeeper无法验证该文件。从那里,进入您的“安全性与隐私”选项卡,在“系统偏好设置”中,然后点击允许该应用程序打开。


chmod: -R:没有这个文件或目录。当我直接尝试在 .app 文件上操作时。 - iamse7en
1
给出的示例有点无效。正确的是chmod -R 755 - D.A.H
这对我有用(好的,chmod -R 755 Path\to\app\file.app)。 - Webreaper
这对我在使用nodewebkit(nwjs)制作的游戏中有效。 - Alex Boschmans
1
有点惊讶的是,这对于Pixma MG 3051打印机/扫描仪的佳能IJScan16f扫描仪驱动程序起作用了。(小变化:我使用了“sudo chmod -R a+x /System/Volumes/Data/Library/Image\ Capture/Devices/Canon\ IJScanner16f.app”) - tripleee
显示剩余4条评论

47

在我的情况下,问题与Big Sur问题有关,其中UPX压缩的二进制文件不能被正确识别,因此它们没有被执行并出现了权限错误。

这里有更多的信息:UPX compressed application fails to start on latest macOS release: Big Sur 11.01 #424

因此,解决方法是使用UPX解包二进制文件并正常运行它。

使用Homebrew(可执行文件brew)安装upx:

brew install upx

现在运行此命令:

sudo upx -d /Applications/my_app.app/Contents/MacOS/my_app
请注意要指定完整的二进制路径。 您应该使用您的二进制文件路径,而不是“/Applications/my_app.app/Contents/MacOS/my_app”。 然后正常运行应用程序。

62
不适用于我。NotPackedException: not packed by UPX - iamse7en
3
我不完全理解这个脚本的作用,但在我的情况下它起作用了。更好的理解会很有帮助。 - DeejonZ
@iamse7en 我也遇到了同样的异常,但是当我尝试运行应用程序时,它突然就可以工作了!所以我想忽略这个异常。 - yairchu
2
这对我没用。它显示未解压任何文件。 - dheeraj reddy
2
你如何知道这个应用程序的二进制文件是否已经使用了UPX进行压缩? - Marcie
显示剩余4条评论

26

我找到了一个解决方案:

  1. 你需要重新签名该应用程序, (如果需要,安装Xcode工具):

xcode-select --install

sudo codesign --force --deep --sign - /Applications/YourAppName.app
  • 将该应用程序移至隔离区:

    sudo xattr -d -r com.apple.quarantine /Applications/YourAppName.app
    
  • 前往/Applications/YourAppName.app/Contents/MacOs,并将其中的文件设为可执行:

  • sudo chmod +x Script_name
    
    那对我有效,应用程序已启动。

    1
    sudo codesign --force --deep --sign - /Applications/YourAppName.app只有这一行对我起作用。 - Victor.Uduak
    这对我也起作用了。我试图将一个应用程序复制到ramdisk中,但无法启动它。 - Erik Pöhler

    9

    本回答仅适用于特定应用程序

    我曾经在一种通用二进制(Terminal)上遇到了这个问题,我复制了它,并在“信息”中明确设置为“使用Rosetta打开”,以便运行x86工具,如Homebrew。在从11.0.0更新到11.0.1后,终端的x86版本因上述错误而停止工作。

    我只需要删除该副本,创建另一个终端的副本并再次启用Rosetta即可。


    8

    首先确定您的应用程序签名是有效的:

    来自苹果官方网站

    App Store中的所有应用程序都由Apple进行签名,以确保它们没有被误用或篡改。 Apple会为任何附带Apple设备的应用程序进行签名。

    要检查此内容,您可以在终端中输入以下内容(Folx.app的路径仅用于示例,您应该将其替换为所需的应用程序):

    pkgutil --check-signature /Applications/Folx.app
    

    如果你收到了“无效签名”的回复,类似于这样: enter image description here 那么你的应用程序可能是以某种不正当的方式安装的!现在最简单的方法是卸载应用程序并重新安装。
    否则,你将会花费很多时间去享受该应用程序、Xcode和签名等问题...

    我可以使用upx命令运行我的应用程序:但是我之前尝试过在upx之前和之后运行您的命令,但我始终看到:“状态:无签名”,即使在upx之后应用程序正常运行。因此,这个命令并没有帮助理解问题。 - DeejonZ
    即使我使用自签名的签名证书让它工作起来了,这个问题仍然没有改变。 - phyatt

    4

    您需要运行 SUDO xattr -d com.apple.quarantine <app> 命令。重要的是不要忘记使用sudo,否则它将无法生效。


    仍然对我无效,没有任何变化。尝试运行 https://github.com/pixelomer/AltDeploy/releases - iamse7en
    这对我有用(我也运行了 chmod 和 upx,但在执行此命令之前它没有起作用;不确定它们是否有影响) - mikhuang
    这个问题一直存在,但对于任何类似的问题,它从未对我起过作用。只需使用“xattr文件名”即可查看是否设置了此属性并且可以删除;对我来说,这从未成立。 - tripleee

    2

    这是在我的情况下唯一有效的解决方案。

    下载macOS-GateKeeper-Helper

    • 双击打开GateKeeper_Helper.command(如果提示不信任的开发者,请前往设置 - 安全性与隐私 - 通用 - 仍要打开)

    • 选择选项4(从GateKeeper隔离区中删除应用程序)

    • 将应用程序文件从应用程序文件夹拖放到界面上,按下Return键,并输入您的密码

    • 您会看到一个消息,例如“应用程序已从隔离区中删除”。就这样。尝试像往常一样打开该应用程序。


    太棒了!我尝试了几种方法来处理一些Synergy二进制文件,而这个脚本中的自签名起作用了。 - phyatt
    这对我有用,已从隔离中删除并自签名。 - Santhosha
    4
    我们为什么要信任这个应用程序? - Peter Mortensen

    0

    当我给同事测试我开发的 Mac 应用程序时,遇到了这个问题。他尝试了一些论坛上的建议,但似乎都没有起作用(我们都是 Intel 处理器,Rosetta 的技巧并不适用)。

    对我最终有效的方法是创建一个空白磁盘映像,然后将 .app 文件添加到映像中,然后发送给他。看来问题出现在压缩 .app 文件时,将文件先添加到磁盘映像中似乎有助于防止这个问题的发生。


    “休眠Mac应用程序”是什么意思?你能详细说明一下吗? - Peter Mortensen
    抱歉,那是打错字了。我想说的是“测试”。 - RyanBDevilled

    0
    对于我的团队来说,这是关于Git向Entitlements.plist文件添加CRLF的问题。
    一旦我修复了.gitattributes文件,只使用LF与p-list文件,我构建了一个新的应用程序并进行了代码签名,它也工作正常 - 没有中止。 我还必须确保Jenkins清除了工作区,因为一开始似乎没有修复文件。

    我不得不执行sudo su命令,以使所有文件可写。但是为什么它们设置得如此糟糕,以至于通常的卸载无法正常工作。我正在使用Ventura。 - James Rome

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接