Проблема с правами доступа

У перенесенных из резервной копии файлов права доступа оказались выставлены «неправильно»...
Terminal

Ничто не вечно… И вот как-то пришло время поменять на моем «старичке»-iMac’е жесткий диск (Кстати, после установки SSD iMac mid-2007 оказался еще вполне пригодным для «офисных» задач… но речь совсем не об этом).

У перенесенных из резервной копии файлов права доступа оказались выставлены «неправильно». Ну, то есть так, что для любых действий с моими собственными документами компьютер стал требовать пароль администратора, но и после этого не всегда делал то, что нужно.

Попытки исправить ситуацию через окно «Свойства» или очевидной

chmod -R 775 ~/

к успеху не привели. Стало быть, дело не в привычной для всех Unix-подобных ОС системе прав, а в ACL (Access Control List — списках управления правами). Это понятно. Сложнее найти информацию о работе с ними. К счастью, для решения нашей проблемы достаточно знать совсем немного.

Во-первых, увидеть, что на файлы помимо стандартных прав доступа назначены еще и ACL, можно с помощью самой обычной команды (да, без Терминала нам не обойтись!)

ls -l
Вывод прав доступа по ls -l

У некоторых файлов в конце строки, описывающей права доступа, стоит плюс — вот это и есть признак наличия ACL.

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

ls -le

Тогда, помимо обычной информации, мы увидим примерно следующее:

Вывод информации об ACL по ls -le

Вот то, что находится в нулевой строке, как раз нам сейчас и мешает. Стало быть, её нужно удалить. Для этого используем (сюрприз?) хорошо знакомую команду chmod. Выглядеть это будет так:

sudo chmod -R -a# 0 ~/

С опцией -R всё как обычно — команда будет рекурсивно обрабатывать содержимое всех вложенных каталогов в домашнем каталоге (~/).

Ну, а -a# приказывает удалить элемент ACL по его индексу (в нашем случае, это нулевой элемент).

PS

Если нет желания писать «магические заклинания» в Терминале, для изменения прав доступа есть замечательная графическая утилита Batchmod. Среди ее функций есть и очистка ACL:

Batchmod - очистка ACL