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

0

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

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

Теги:
macos
cocoa
bsd

2 ответа

1

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

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

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

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

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

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

См. Также этот вопрос о том, как запретить root писать в файлы.

  • 0
    По сути, я хочу предоставить пользователю след некоторых файлов (скажем, однодневную пробную версию) и удалить эти файлы, как только истечет срок следования, и все эти файлы будут помещены в определенную папку в среде пользователя. Каков наилучший подход, который я должен использовать для защиты этих файлов?
  • 1
    @johnfedric - добавьте эту информацию в качестве редактирования к вашему вопросу, другие могут не увидеть ее здесь. Что лучше всего, будет зависеть от того, что находится в этих файлах, насколько они пригодны для использования вне вашего приложения, действительно ли они должны существовать как файлы в файловой системе и т. Д. И т. Д. И т. Д. Как упоминалось выше, одним из вариантов является шифрование - шифрование с 2 ключами. где ваш сервер шифруется одним ключом, ваше приложение расшифровывается другим, и в дополнение к любым данным, содержащимся в файле, есть также метаданные, указывающие дату истечения срока действия и т. д. Независимо от того, подходит ли это лучше всего или даже подходит для вашего сценария, вам придется решать ,
1

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

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

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

  • 0
    Можем ли мы создать пользователя на компьютере пользователя и сделать этого пользователя владельцем этой папки и предоставить все права на изменение только этому пользователю.
  • 1
    Ничто из того, что вы можете сделать с помощью ACL, не помешает администраторам или владельцу сбросить разрешения и получить доступ к файлам.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню