2015-02-04 4 views

ответ

2

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

group:everyone deny delete 

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

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

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

+0

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

0

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

Смежные вопросы