是什么导致OS X将文件夹标记为已隔离?


35

我在之下有一个文件夹~/Sites,我们称它为文件夹,Foo通过Apache我正在其中共享一个Wordpress开发中站点。一切正常,我将其映射foo.local127.0.0.1我的主机文件中,并从我的笔记本电脑上访问该站点。

然后,我尝试通过iPhone访问该站点。~/Sites通过浏览到my-computers-hostname.local,我可以看到电话的根索引,但无法访问Wordpress网站,因为它被设置为相信其地址为foo.local,因此在其数据库中对该URL进行了硬编码引用。当我尝试将其URL设置更改为时,发生了my-computers-hostname.local一件非常奇怪的事情:尝试保存更改时收到授权错误。从那时起,包含Wordpress站点的整个文件夹从foo.local/ 的索引页中消失my-computers-hostname.local,并且任何尝试通过URL访问它的尝试都遇到了来自Web服务器的403-拒绝授权错误。

在终端中列出有问题的文件夹后,我发现com.apple.quarantine扩展属性已应用到该文件夹以及其中包含的所有文件。是什么导致操作系统隔离文件夹?是尝试从另一台计算机进行访问,还是与Wordpress的配置有关?

Answers:


43

com.apple.quarantine扩展属性可能什么都没有做与您正在与Apache遇到的问题。它们是10.5中添加文件隔离功能的一部分:

文件隔离是Leopard中的一项新功能,旨在保护用户免受特洛伊木马攻击。它允许从Internet下载文件内容的应用程序将文件放入“隔离区”,以表明该文件可能来自不可靠的来源。应用程序只需将值分配给一个或多个隔离属性即可隔离文件,隔离属性保留有关文件何时何地的信息。

当使用Launch Services API打开隔离的文件并且该文件似乎是应用程序,脚本或其他可执行文件类型时,Launch Services将显示警报,以确认用户了解该文件是某种应用程序。

在以下情况com.apple.quarantine下可以添加扩展属性:

  • 您使用Safari,Chrome或Transmission等隔离应用程序下载文件。对于Firefox之类的一些应用程序,必须在中启用隔离/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Exceptions.plist
  • 您可以使用Archive Utility或OS X tar或的应用程序提取档案zip
  • 您使用LSFileQuarantineEnabled在中将应用程序设置为true 的应用程序创建文件Info.plist

扩展属性具有用于隔离状态,时间戳记,发起隔离事件的代理以及有时是UUID的字段:

$ xattr -p com.apple.quarantine Worksheet_v10.4.pdf
0042;51ea420b;Safari.app;5E2F48EA-1356-4D57-BFEA-571EE8ADC08C
$ date -r 0x51ea420b
Sat Jul 20 10:53:47 EEST 2013
$ sqlite3 ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 .dump|grep 5E2F48EA-1356-4D57-BFEA-571EE8ADC08C
INSERT INTO "LSQuarantineEvent" VALUES('5E2F48EA-1356-4D57-BFEA-571EE8ADC08C',395999627.472166,'com.apple.Safari','Safari','http://images.apple.com/server/docs/Worksheet_v10.4.pdf',NULL,NULL,0,NULL,'http://images.apple.com/',NULL);

第一个字段是十六进制的位字段,例如,第一次打开文件后,通常会设置第七个位(2 ^ 6或0x40)。

您可以使用删除扩展属性xattr -dr com.apple.quarantine ~/Sites,但对Apache可能不会产生任何影响。但是,它将禁用“是从Internet下载的文件”对话框。


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

3
xattr -dr com.apple.quarantine <path>工程!
parasrish


令人讨厌的功能,我从未使用过。感谢您的解释
-cjohansson

1
xattr -dr com.apple.quarantine <path>给了我option -r not recognized,但是xattr -d com.apple.quarantine <path>工作了!
saulspatz
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.