我应该如何处理 com.apple.quarantine?

Jas*_*n S 107 java permissions macos

我已经下载了一些.jar从互联网上的文件,并想用它们在Mac OS X.但操作系统似乎已经标记他们的扩展属性com.apple.quarantine(没有这方面的迹象,直到我注意到了“@在”中ls -l和想通了如何使用ls -l@)——显然是因为它们是从互联网上下载的。处理这个问题的正确方法是什么?

Arj*_*jan 94

你不必对付它。打开它,OS X 会征求你的同意。或者像理查德建议的那样,使用以下内容删除它:

xattr -d com.apple.quarantine my_jar.jar
Run Code Online (Sandbox Code Playgroud)

要为任何下载的文件自动执行此操作,您可以将文件夹操作附加到下载文件夹,如 macosxhints.com 中10.5 中所述:删除“已下载文件”警告标志

以下内容很久以前发布在 macosxhints.com 上,适用于 Safari:10.5:禁用“从 Internet 下载”文件警告,声称可以VerifiedDownloadPlugin.plugin/Library/Internet Plug-Ins. 我没有测试。

顺便说一句:有时需要在 Mac 上多次启动一个程序。这可以使用cd /Applications/some-application/后跟来完成open -n "Application Name.app"。这确实需要.app后缀;运行open -n "Application Name"可能会导致一个 GateKeeper 停止访问:

无法打开“应用程序名称”,因为它来自身份不明的开发人员。

您的安全首选项只允许安装来自 Mac App Store 和已确定的开发人员的应用程序。

上面,即使删除扩展属性com.apple.quarantine也不能解决这个问题,但使用.app后缀就可以了。

(我不建议任何人真正摆脱安全措施。)

  • 我有很多这样的文件,并且必须手动删除 xattr,因为 OS X 没有请求许可... (2认同)

mar*_*k4o 75

添加此属性是为了在第一次运行下载的程序时要求用户确认,以帮助阻止恶意软件。确认后,该属性应自动删除,然后程序将正常运行。

  • 但它不会在打开时被删除,并且似乎会无限期地持续存在,即使拖到 /Applications 时也是如此 (4认同)

Ric*_*ins 26

 xattr -d com.apple.quarantine /path/to/file
Run Code Online (Sandbox Code Playgroud)

  • 非必要时不要使用 `sudo`。 (3认同)
  • 如何对目录中的所有文件递归执行此操作? (2认同)
  • `find /path/to/dir -exec xattr -d com.apple.quarantine {} \;` (2认同)

Lri*_*Lri 7

您可以使用 永久禁用警告defaults write com.apple.LaunchServices LSQuarantine -bool false。即使您不允许从系统偏好设置中的任何地方下载应用程序,它也会禁用 Gatekeeper 对话框。


小智 5

我找到了以下命令

find Application.app | while read l; do echo $l; xattr -d com.apple.quarantine "$l"; done
Run Code Online (Sandbox Code Playgroud)

试图摆脱该属性时非常有帮助。请注意周围的双引号$l- 如果您的应用程序文件夹包含名称中带有空格的文件,则需要它们。

  • 你也可以使用`xattr -rd com.apple.quarantine Application.app`。 (10认同)
  • 你不需要 while... 循环。find 可以做到这一切:“ find Application.app -print -exec xattr -d com.apple.quarantine {} \; ” (4认同)