Полное ограничение всех типов доступа к папке

Я делаю приложение какао, которое создает несколько папок в указанном мной месте в среде пользователя. Теперь я хочу защитить эти папки от любого типа доступа для чтения, записи, копирования, перетаскивания от всех типов пользователей (т.е. недоступен для администраторов и не администраторов). Есть ли способ защитить эти папки от любого типа доступа ,
Можем ли мы использовать метод NSFileManager -SetAttributes: OfItemAtPath: ошибка:
Но я не уверен в словаре атрибутов этого метода.

По сути, я хочу предоставить пользователю несколько файлов (скажем, однодневную пробную версию) и удалить эти файлы, как только истечет срок действия файла, и все эти файлы будут помещены в определенную папку в среде пользователя. Какой должен быть лучший подход для защиты этих файлов?

0

Решение

Вы могли бы использовать NSFileManager setAttributes: OfItemAtPath: ошибка: с ключом атрибутов NSFilePosixPermissions. С этим вы можете установить Unix-файл разрешения вашей папки, указав их с целочисленным значением, которое представляет шаблон разрешения бит. Установка его в ноль будет означать отсутствие доступа к этому каталогу:

NSDictionary *attribs = [NSDictionary dictionaryWithObjectsAndKeys:
NSFilePosixPermissions, [NSNumber numberWithInt:0], nil];

Однако все равно можно было бы переместить или переименовать этот каталог.

1

Другие решения

Краткий ответ: Нет. Кто-то с повышенными привилегиями может делать что угодно. Никакая игра с разрешениями не приведет вас туда и все же позволит вашему приложению получить доступ к файлам.

Если бы вы могли просто отключить все права доступа, как бы вы ожидали, что ваше собственное приложение получит доступ к файлам? Включение прав доступа само по себе является правом доступа …

Более длинный ответ: возможно. Это зависит от того, чего вы пытаетесь достичь. Вы действительно хотите остановить копирование файлов или просто доступ к их содержимому?

Шифрование может использоваться для защиты содержимого (например, на уровне файлов, с использованием зашифрованного изображения sparsebundle и т. Д.), Хранение идентификационной информации в файле может предупредить вас о том, что вы используете копию (например, посмотрите, что произойдет, если вы переместите / скопируете виртуальная машина VMWare или воссоздание папки Google Drive) и т. д.

И вы всегда можете реализовать свою собственную файловую систему, используя FUSE; и предотвращать копирование, доступ и т. д. с помощью собственного механизма, однако файловая система в целом все еще может быть скопирована (т. е. эффективно реализовать собственный эквивалент зашифрованного пакета с помощью FUSE и реализовать собственный механизм доступа).

Чего ты пытаешься достичь? Если вы это изложите, люди могут предложить альтернативные решения.

Смотрите также этот вопрос по предотвращению записи root в файлы.

1