терминал

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

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
Опубликовано Михаил К в Mac OS X / macOS

Как увидеть невидимое

В любой операционной системе есть те или иные служебные файлы, видеть которые пользователю в обычной ситуации совершенно ни к чему. Как минимум, они бесполезно загромождают окно. Иногда, к тому же, из случайное удаление или перемещение может нарушить работу какой-либо программы.

Однако при обслуживании системы или поиске причин некорректной работы администратору может потребоваться доступ к ним. В Терминале увидеть все файлы, включая скрытые, очень просто — достаточно использовать в команде ls ключ -a. Но иногда хочется пользоваться графическим интерфейсом.

Включить отображение скрытых файлов в Finder не так просто, как в Проводнике Windows, не говоря о, к примеру, Thunar в Linux. Возможно, это и правильно: админу — админово, юзеру — юзерово. И, тем не менее, как же изменить настройки?

Для этого нужно воспользоваться Терминалом. Дадим команду изменения скрытых настроек:

defaults write com.apple.finder AppleShowAllFiles FALSE

…и перезапустим Finder. Это можно сделать командой

killall Finder

или через меню, вызываемое при щелчке по картинке Finder в Dock при нажатой клавише Option (Alt).

Вернуть Finder в нормальный режим можно аналогичными командами, заменив параметр FALSE на TRUE.


Еще о скрытых файлах

Для того чтобы сделать файл скрытым в Mac OS X есть несколько способов.

  1. Стандартный для Unix/Linux путь — начать имя файла с точки
  2. Стандартный для «классической» Mac OS X путь — установить атрибут файла «скрытый»
  3. (начиная с Mac OS X 10.4 стандартно не используется, но пока что поддерживается в Finder) — указать имя файла в скрытом текстовом файле .hidden, находящемся в той же папке

Для установки атрибута «скрытый» можно воспользоваться командой

chflags hidden /полный/путь/к/файлу

Между прочим, чтобы попасть в один из стандартных каталогов Unix (/bin, /sbin, /usr и т.п.), также скрытых в Mac OS X от глаз простого пользователя, вовсе не обязательно переключать режимы.

В меню Finder есть команда Перейти — Перейти к папке… При выборе этой команды открывается панель, в которой можно ввести путь к нужной папке, даже если она сама или одна из внешних — скрытая. Например,

/usr/share

Щелкаем «Перейти». Готово! В окне Finder открыто содержимое искомой папки.

Опубликовано Михаил К в Mac OS X / macOS, 0 комментариев