Ограничить переименование папки какао

0

Изображение 174551

Подобно папке "Приложения", я хочу ограничить пользователя моего приложения переименованием некоторых папок (созданных моим приложением). Итак, любой API cocoa/Objective-c/c++ для достижения того же?

Теги:
macos
cocoa

2 ответа

2

То, что держит /Applications от переименования, состоит в том, что он имеет ACL (список контроля доступа), который запрещает удаление. Фактический ACL:

group:everyone deny delete

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

Имейте в виду, что до тех пор, пока пользователь владеет папкой, они могут удалить ACL и удалить/переименовать их содержимое. Если они не владеют им, как вы его создали? /Applications принадлежат root и получили этот путь, потому что OS X Installer (с привилегиями root) создал его таким образом. (Даже не подумайте о том же маршруте. Требование root-привилегий просто для того, чтобы удовлетворить ваше чувство аккуратности, является gauche.)

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

  • 0
    Этот ACL - лишь один из многих способов сделать это, любой способ сделать его не удаляемым для этого пользователя (я знаю, что не могу ограничить admin / root)
0

Вы можете заблокировать папку. Попробуйте с атрибутом NSFileImmutable в папке с NSFileManager

Ещё вопросы

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