Що змушує OS X позначати папку як карантинну?


35

У мене була папка під ~/Sitesназвою її Foo, з якої я ділився веб-сайтом Wordpress в розробці через Apache. Це працює нормально, я зіставляються foo.localз 127.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-адресою відповідали помилці 403 - Авторизація відхилена від веб-сервера.

Перерахування відповідної папки в Терміналі показало мені, що com.apple.quarantineрозширений атрибут застосовано до нього та до всіх файлів, що містяться в ньому. Що може спричинити карантинну папку операційної системи? Це була спроба доступу з іншої машини чи щось пов’язане з конфігурацією Wordpress?

Відповіді:


43

Ці com.apple.quarantineрозширені атрибути , ймовірно , не мають нічого спільного з проблемами у вас виникли з Apache. Вони є частиною функції карантину файлів, яка була додана в 10.5 :

Файл-карантин - це нова функція в Leopard, призначена для захисту користувачів від атаки троянських коней. Це дозволяє програмам, які завантажують вміст файлів з Інтернету, розміщувати файли у «карантині», щоб вказати, що файл може бути з недостовірного джерела. Додаток карантинує файл просто шляхом присвоєння значень одній або кільком властивостям карантину, які зберігають інформацію про те, коли і звідки файл надходить.

Коли API запуску служб використовується для відкриття карантинного файлу, а у цьому файлі видається додаток, сценарій чи інший виконуваний тип файлу, служба запуску відобразить попередження, щоб підтвердити, що користувач розуміє, що файл є якоюсь програмою.

Ці com.apple.quarantineрозширені атрибути можуть бути додані в наступних випадках:

  • Ви завантажуєте файл за допомогою карантинної програми, наприклад Safari, Chrome або Передача. Для кількох додатків, таких як Firefox, карантин змушений бути включений /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/Exceptions.plist.
  • Ви витягуєте архів із такою програмою, як Archive Utility або OS X's 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. Однак він відключить діалоги "файл, завантажений з Інтернету".


"варіант -r не визнано"
Джеймі Іванов

3
xattr -dr com.apple.quarantine <path>працює!
парасити

Довідка для детальної інформації: дискусії.apple.com
message/15507936#message15507936

Неймовірно дратівлива функція, я ніколи не використовував її. Дякуємо за пояснення
cjohansson

1
xattr -dr com.apple.quarantine <path>дав мені option -r not recognized, але xattr -d com.apple.quarantine <path>працював!
saulspatz
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.