Ничто не вечно… И вот как-то пришло время поменять на моем «старичке»-iMac’е жесткий диск (Кстати, после установки SSD iMac mid-2007 оказался еще вполне пригодным для «офисных» задач… но речь совсем не об этом).
У перенесенных из резервной копии файлов права доступа оказались выставлены «неправильно». Ну, то есть так, что для любых действий с моими собственными документами компьютер стал требовать пароль администратора, но и после этого не всегда делал то, что нужно.
Попытки исправить ситуацию через окно «Свойства» или очевидной
chmod -R 775 ~/
к успеху не привели. Стало быть, дело не в привычной для всех Unix-подобных ОС системе прав, а в ACL (Access Control List — списках управления правами). Это понятно. Сложнее найти информацию о работе с ними. К счастью, для решения нашей проблемы достаточно знать совсем немного.
Во-первых, увидеть, что на файлы помимо стандартных прав доступа назначены еще и ACL, можно с помощью самой обычной команды (да, без Терминала нам не обойтись!)
ls -l
У некоторых файлов в конце строки, описывающей права доступа, стоит плюс — вот это и есть признак наличия ACL.
Чтобы понять, что же там скрывается, команду придется немного дополнить:
ls -le
Тогда, помимо обычной информации, мы увидим примерно следующее:
Вот то, что находится в нулевой строке, как раз нам сейчас и мешает. Стало быть, её нужно удалить. Для этого используем (сюрприз?) хорошо знакомую команду chmod. Выглядеть это будет так:
sudo chmod -R -a# 0 ~/
С опцией -R всё как обычно — команда будет рекурсивно обрабатывать содержимое всех вложенных каталогов в домашнем каталоге (~/).
Ну, а -a# приказывает удалить элемент ACL по его индексу (в нашем случае, это нулевой элемент).
PS
Если нет желания писать «магические заклинания» в Терминале, для изменения прав доступа есть замечательная графическая утилита Batchmod. Среди ее функций есть и очистка ACL: