我应该怎么做com.apple.quarantine?


90

我已经.jar从互联网上下载了一些文件,并希望在Mac OS X下使用它们。但是OS似乎已经使用扩展属性com.apple.quarantine对其进行了标记(直到我@ls -l和中注意到“ 弄清楚如何使用ls -l@)-显然是因为它们已从Internet下载。解决这个问题的正确方法是什么?

Answers:


63

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


嗯...好吧。因此,这是保存文件的浏览器实现与运行可执行程序的OS和/或Java之间的一种约定。
杰森S

除了它是不开放的去除,似乎无止境的持续下去,即使拖到/应用
埃里克·艾格纳

83

你不必对付它。打开它,OS X将请求您的许可。或像理查德建议的那样,使用类似以下的方法删除它:

xattr -d com.apple.quarantine my_jar.jar

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

其次为上macosxhints.com张贴在很久以前,Safari浏览器:10.5:禁用“从互联网上下载的”文件警告,声称可以删除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后缀就可以了。

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


1
我有许多这样的文件,由于OS X并未征求许可,因此不得不手动删除xattr ...
Brian Knoblauch

1
@Brian,然后单击鼠标右键,“打开”也不提示吗?(如果OS X确实提示了一个,但有时不显示继续选项,则有时会有所帮助。)
Arjan

1
感谢xattr的号召,这比弄清楚如何在框架上触发一些不适当的(IMO)对话要容易得多。
苏·斯彭斯

22
 xattr -d com.apple.quarantine /path/to/file

3
不需要sudo时不要使用。
2009年

1
编辑答案以删除“ sudo”。
理查德·霍斯金斯

1
如何对目录中的所有文件进行递归处理?
兰登·库恩

1
@ landon9720- 下面的(当前)答案有一条注释,该注释使您可以指示xattr对提供的目录的内容进行递归工作
user66001 2013年

2
find /path/to/dir -exec xattr -d com.apple.quarantine {} \;
sepehr

6

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


4

我发现以下命令

find Application.app | while read l; do echo $l; xattr -d com.apple.quarantine "$l"; done

尝试摆脱该属性时非常有帮助。请注意双引号$l–如果您的apps文件夹包含名称中带有空白的文件,则需要使用双引号。


9
您也可以使用xattr -rd com.apple.quarantine Application.app
Lri 2012年

4
您不需要while ...循环。查找可以完成所有操作:“查找Application.app -print -exec xattr -d com.apple.quarantine {} \;”
rivimey

“选项-r无法识别”
Jamie Ivanov

无需为每个文件产生新的进程,也不必从文件中删除xattribute(如果没有的话):find . -xattrname com.apple.quarantine -print0 | xargs -0 xattr -d com.apple.quarantine
dland

所有这些命令行示例仅在您位于包含应用程序的目录中时有效。@dland find也有一个-exec小学。 find /Applications -xattrname com.apple.quarantine -exec xattr -d com.apple.quarantine {} \; 您可以替换/Applications为所需的完整路径,例如,/Users/jdoe/Downloads 如果您位于文件所在的目录中,则只需xattr -d com.apple.quarantine <target><target>文件或应用程序名称所在的位置进行即可。
user2531336

0

xattr现在具有-r标志以进行递归。因此,您不必遍历所有查找内容。它还有一个-c可以清除所有标志(包括FinderInfo),除非您真的很生气,否则不建议您这样做。:-)


嗯...您在回答哪个问题?
詹森·S

您似乎在评论此问题的另一个答案(superuser.com/a/126227/1162),而不是自己提供答案。
杰森S
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.