Що мені робити щодо com.apple.quarantine?


90

Я завантажив деякі .jarфайли з Інтернету і хочу використовувати їх під Mac OS X. Але ОС, схоже, позначила їх розширеним атрибутом com.apple.quarantine (жодних вказівок на це, поки я не помітила " @" в ls -lі придумав, як користуватися ls -l@) - мабуть тому, що їх завантажили з Інтернету. Який правильний спосіб впоратися з цим?

Відповіді:


63

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


ааааааа ... добре, що має сенс. Отже, це договір між реалізаціями браузера, які зберігають файли, та ОС та / або Java під час запуску виконуваних файлів.
Джейсон S

за винятком того, що він не знімається відкрито і, здається, зберігається нескінченно, навіть при перетягуванні на / Програми
Erik Aigner

83

Вам не доведеться з цим боротися. Відкрийте його, і OS X попросить вашого дозволу. Або як запропонував Річард, видаліть його, використовуючи щось на зразок:

xattr -d com.apple.quarantine my_jar.jar

Щоб зробити це автоматично для будь-якого завантаженого файлу, ви можете прикласти дію до папки для завантаження, як описано на macosxhints.com в 10.5: Видаліть попереджувальний прапор "завантажений файл" .

І наступне було розміщено на 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 та визначених розробників.

Вище навіть видалення розширеного атрибуту com.apple.quarantineне виправляє цього, але використання .appсуфікса працює чудово.

(Я нікому не раджу фактично позбутися заходів безпеки.)


1
У мене є така кількість файлів, як цей, і мені довелося вручну видалити xattr, оскільки OS X не просив дозволу ...
Брайан Кноблауч,

1
@Brian, і чи клацнув правою кнопкою миші, не відкрити також запит? (Це іноді допомагає, якщо ОС X підкаже, але не показує можливість продовжувати.)
Ар'ян,

1
Дякую за заповнення xattr, менше турбує, ніж з'ясовувати, як викликати якийсь невідповідний діалог (IMO) на рамках.
Сью Спенс

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

3
Не використовуйте, sudoколи не потрібно.
s4y

1
Редагував відповідь, щоб видалити "sudo".
Річард Хоскінс

1
Як це робити рекурсивно до всіх файлів у каталозі?
Ландон Кун

1
@ landon9720 - У відповіді (на даний момент) нижче є коментар, який дозволяє доручити xattr працювати рекурсивно над вмістом наданого каталогу
user66001

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- вони вам потрібні, якщо в папці ваших додатків містяться файли з порожнім іменем.


9
Ви також можете використовувати xattr -rd com.apple.quarantine Application.app.
Lri

4
Вам не потрібно час ... петля. знайти може це зробити все: "знайти Application.app -print -exec xattr -d com.apple.quarantine {} \;"
rivimey

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

Немає необхідності створювати новий процес для кожного файлу, а також не потрібно видаляти 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>ім'я файлу чи програми.
користувач2531336

0

Xattr тепер має -r прапор для повторного запису. Тож вам не доведеться проходити пошук цих речей. Крім того, він має -c, який очищатиме ВСІ прапори (включаючи FinderInfo), не завжди рекомендується, якщо ви справді не злий на нього. :-)


е ... на яке питання ви відповідаєте?
Jason S

Схоже, ви коментуєте іншу відповідь у цьому питанні ( superuser.com/a/126227/1162 ), а не надаєте відповідь самостійно.
Jason S
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.