Что заставляет OS X пометить папку как помещенную в карантин?

35

У меня была папка ~/Sites, скажем так Foo, из которой я делился сайтом Wordpress в разработке через Apache. Это работало нормально, я сопоставил foo.localэто 127.0.0.1в моем файле hosts и получал доступ к сайту оттуда на моем ноутбуке.

Затем я попытался получить доступ к сайту с моего iPhone. Я мог видеть корневой индекс ~/Sitesс телефона my-computers-hostname.local, просматривая веб-сайт, но не мог получить доступ к сайту Wordpress, так как он был настроен так, чтобы верить его адресу foo.local, и поэтому имел жестко запрограммированные ссылки на этот URL в своей базе данных. Когда я попытался изменить его настройку URL на my-computers-hostname.localчто-то очень странное: я получил ошибку авторизации при попытке сохранить изменения. С этого момента вся папка, содержащая сайт Wordpress, исчезла со страницы индекса в foo.local/ my-computers-hostname.local, и любые попытки получить доступ к ней по URL-адресу были встречены с ошибкой 403 - Отказ в авторизации от веб-сервера.

Список указанной папки в Терминале показал мне, что com.apple.quarantineрасширенный атрибут был применен к нему и ко всем файлам, содержащимся в нем. Что может заставить операционную систему изолировать папку? Была ли это попытка доступа с другого компьютера или что-то связанное с настройкой Wordpress?

Дэн Дж
источник

Ответы:

43

Эти com.apple.quarantineрасширенные атрибуты , вероятно , не имеют ничего общего с проблемами у вас возникли с Apache. Они являются частью функции карантина файлов, которая была добавлена ​​в 10.5 :

Файловый карантин - это новая функция в Leopard, предназначенная для защиты пользователей от атак троянских коней. Это позволяет приложениям, которые загружают содержимое файлов из Интернета, помещать файлы в «карантин», чтобы указать, что файл может быть из ненадежного источника. Приложение помещает файл в карантин, просто присваивая значения одному или нескольким свойствам карантина, которые сохраняют информацию о том, когда и откуда файл поступил.

Когда API-интерфейс Launch Services используется для открытия файла, помещенного на карантин, и файл выглядит как приложение, сценарий или исполняемый файл другого типа, 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. Однако он отключит диалоги «это файл, загруженный из Интернета».

LRI
источник
«опция -r не признана»
Джейми Иванов
3
xattr -dr com.apple.quarantine <path>работает !
parasrish
Ссылка для подробной информации: discussions.apple.com/message/15507936#message15507936
parasrish
Невероятно раздражающая функция, я никогда не использовал ее. Спасибо за объяснение
cjohansson
1
xattr -dr com.apple.quarantine <path>дал мне option -r not recognized, но xattr -d com.apple.quarantine <path>сработало!
saulspatz