Ограничить переименование папки КАКАО
похожа на папку Applications, я хочу, чтобы ограничить пользователя моего приложения переименовать некоторые папки (созданные моим приложением). Итак, любой какао/Objective-c/C++ API для достижения того же?
Ограничить переименование папки КАКАО
похожа на папку Applications, я хочу, чтобы ограничить пользователя моего приложения переименовать некоторые папки (созданные моим приложением). Итак, любой какао/Objective-c/C++ API для достижения того же?
То, что держит /Applications
от переименования, состоит в том, что он имеет ACL (список контроля доступа), который отрицает удаление. Действительное ACL является:
group:everyone deny delete
переименовании что-то это равносильно удалению его старое имя и добавить его новое имя, так что вы не можете удалить, вы не можете переименовать. На самом деле, это общий принцип - просто сделайте его un-deletable. Этот ACL является лишь одним из многих способов сделать это.
Имейте в виду, что до тех пор, пока пользователь владеет папкой, они могут удалить ACL и удалить/переименовать их содержимое. Если они не владеют им, как вы его создали? /Applications
принадлежит root, и получил этот путь, потому что OS X Installer (который имеет привилегии root) создал его таким образом. (Даже не думайте о том, чтобы идти по тому же пути. Требование root-привилегий просто для того, чтобы удовлетворить ваше чувство аккуратности, является gauche.)
Подробнее: почему вас беспокоит, если пользователь переименовал папку? Это их компьютер. Либо всегда ищите его по имени, которое вы хотите его иметь (чтобы переименование было таким же, как удаление его, насколько ваше приложение заботится), или, еще лучше, быть внимательным к вашим пользователям и позволить им переименовать его, чтобы удовлетворить чувство аккуратности. Сохраните псевдоним, чтобы вы могли продолжить работу с ним под новым именем.
Вы можете заблокировать папку. Попробуйте с атрибутом NSFileImmutable в папке с NSFileManager
Этот ACL является лишь одним из многих способов сделать это, любым способом сделать его не удаляемым для этого пользователя (я знаю, что я не могу ограничить админ/root) –