Как запретить приложению устанавливать бит «карантин»?

Начиная с OS X 10.7.3, мой текстовый редактор устанавливает бит «карантин» для любого файла, к которому он прикасается. .

Мой текстовый редактор предназначен для работы со сценариями оболочки, и если установлен бит карантина, то сценарий оболочки не может быть выполнен из командной строки, пока вы дважды не щелкните его в Finder и не пройдете через «Это приложение было загружено из Интернет» (или удалите бит карантина с помощью xattr).

Например, я только что создал скрипт «hello world» в своем приложении, он помещен в карантин и не может быть выполнен:

$ xattr -l foo
com.apple.quarantine: 0006;4f51dd2f;Dux;
$ chmod +x foo
$ ./foo
-bash: ./foo: Operation not permitted

Если я удаляю бит карантина, скрипт работает:

$ xattr -d com.apple.quarantine foo
$ ./foo
hello world


Согласно некоторым форумам сообщения, TextEditтакже устанавливает бит карантина для любого сценария оболочки, который он создает.

Я использую простой подкласс NSDocumentдля создания файла:

- (NSData *)dataOfType:(NSString *)typeName error:(NSError **)outError
{
  return [self.textStorage.string dataUsingEncoding:self.stringEncoding];
}


Как удалить бит карантина из файлов, созданных в моем приложении? Другие текстовые редакторы, такие как TextWrangler, не устанавливают бит карантина.

ОБНОВЛЕНИЕ

Еще немного информации, это происходит только при создании файла «приложения сценария», который представляет собой что угодно, от сценариев perl до html.

И это происходит только тогда, когда мое приложение находится в песочнице. Отключение песочницы решает проблему, но это не долгосрочное решение.

Я сообщил об ошибке в Radar, похоже, ничего не остается, кроме как ждать/надеяться, что авеню исправит ее.

7
задан Vadim Kotov 17 May 2018 в 22:34
поделиться