Запретить пользователю изменять разрешения каталога, созданного вашим приложением Cocoa - PullRequest
0 голосов
/ 13 февраля 2019

Мы стремимся запретить пользователям доступ к каталогу, который мы создаем из нашего приложения без песочницы, через:

FileManager.createDirectory(atPath:withIntermediateDirectories:attributes:) //where path is ~/Library/Application Support/our.bundle.identifier/ourdir

Для этого мы не установили никаких разрешений для этого каталога, таким образом гарантируя, что они не смогут открытьсячерез:

fileManager.setAttributes([.posixPermissions: 00000], ofItemAtPath: path) //no permissions

Однако пользователи могут просто щелкнуть по нему правой кнопкой мыши, выбрать «Получить информацию» и изменить его с «Нет доступа для всех» на «Чтение и запись», чтобы получить доступ.

Но это не так.это не относится к другим каталогам, которые я нашел.Например, рабочий стол, расположенный по адресу /Users/Guest/ (или любая другая учетная запись пользователя, в которую вы не вошли), также не имеет доступа для всех, и при попытке изменить его вы получите сообщение об ошибке:

Операция не может быть завершена, поскольку у вас нет необходимых разрешений.

Другое отличие, которое я вижу, это то, что флажок Заблокировано для этого каталога отключен, но включен для каталога, созданного нашим приложением..

Это именно то, что нам нужно для каталога, созданного нашим приложением.Как мы можем гарантировать, что у пользователя нет прав на изменение разрешений для этого каталога?

1 Ответ

0 голосов
/ 15 февраля 2019

Причина, по которой определенные папки не могут быть доступны, заключается в том, что они принадлежат другому пользователю, а вошедший в систему пользователь не имеет разрешений.Но ваше приложение также не будет работать, если оно работает под учетной записью пользователя.Пользователи с правами администратора (по умолчанию это учетная запись macOS) всегда могут изменить владельца папки и разрешения, поэтому вы не собираетесь запрещать доступ к папке из когда-либо .

...