Модель прав: владелец, группа и остальные
macOS построена на системе UNIX, поэтому права доступа к файлам во многом устроены так же, как в Linux. У каждого объекта есть три категории пользователей: владелец, группа и все остальные. Для каждой категории задаётся три права: чтение, запись и выполнение. Для папки «выполнение» означает право заходить внутрь и обращаться к вложенным объектам.
Как это выглядит на практике. Вы создали документ — владельцем стали вы, группа по умолчанию у пользовательских файлов обычно называется staff. Вы можете читать и править файл, участники группы и остальные — как правило, только читать. Если же вы пытаетесь открыть файл другого пользователя или системный каталог, система сообщит об отказе.
Отсюда распространённые ситуации:
- файл скопирован с другого компьютера и принадлежит несуществующему здесь пользователю;
- внешний диск подключён, но на запись доступен только владельцу с иным именем;
- программа установлена от имени администратора и не может записать данные в папку;
- права изменили вручную, и теперь не открывается папка целиком.
Общие сведения о правах UNIX также разобраны на странице про права доступа в Linux и chmod.
Окно «Информация»: раздел «Общий доступ и права»
Графический способ удобен для разовых правок. Выделите файл или папку в Finder и нажмите Command и I, либо выберите «Свойства» в контекстном меню. В нижней части окна раскройте раздел «Общий доступ и права».
Там перечислены пользователи и группы и уровень доступа каждого. Основные значения:
| Значение | Что разрешено |
|---|---|
| Чтение и запись | открывать и изменять |
| Только чтение | открывать без изменений |
| Только запись (почтовый ящик) | класть файлы в папку, не видя содержимого |
| Нет доступа | никаких действий |
Чтобы изменить настройки, нажмите значок замка в правом нижнем углу окна и подтвердите пароль администратора. Затем выберите нужный уровень во всплывающем меню напротив пользователя. Меню со значком шестерёнки содержит пункт для применения прав ко всем вложенным объектам: удобно для папки, но подумайте, прежде чем нажимать, потому что действие затронет всё содержимое. После правок замок лучше закрыть.
Чтение вывода ls -l
В терминале права показывает команда ls -l. Строка вывода выглядит примерно так: -rw-r--r-- 1 имя staff 2048 дата файл.txt. Разберём её слева направо.
- Первый символ — тип объекта: дефис для обычного файла, буква d для каталога, l для символической ссылки.
- Следующие девять символов — тройки для владельца, группы и остальных: r чтение, w запись, x выполнение, дефис означает отсутствие права.
- Затем число связей, имя владельца, имя группы, размер в байтах, дата и имя.
Пример: rw-r--r-- значит, что владелец читает и пишет, группа и остальные только читают. Запись rwxr-xr-x типична для программ и каталогов: все могут читать и входить, править может только владелец.
Если вам нужны сведения о самой папке, а не о её содержимом, используйте ключ -d вместе с -l. Чтобы увидеть скрытые файлы, добавьте -a. На macOS у вывода может появляться дополнительный знак в конце строки прав, говорящий о наличии расширенных атрибутов или списка доступа, и тогда подробности покажет ключ -e или -@ — детали есть в man ls.
chmod и chown: числовая и символьная запись
Команда chmod меняет права, chown — владельца. Права удобно записывать числом: каждому праву соответствует вес, и сумма для каждой категории образует цифру.
| Вес | Право |
|---|---|
| 4 | чтение |
| 2 | запись |
| 1 | выполнение |
Отсюда 6 значит чтение и запись, 5 — чтение и выполнение, 7 — все три права. Режим 644 означает владельцу 6, группе и остальным 4: типичный режим для обычных файлов. Режим 755 типичен для программ и каталогов. Пример: chmod 644 file.txt.
Символьная запись нагляднее для точечных правок: chmod u+x script.sh добавляет владельцу право выполнения, chmod go-w file.txt снимает запись у группы и остальных. Смена владельца выполняется командой chown и обычно требует sudo.
Рекурсивные ключи (-R) применяются ко всему содержимому каталога и способны быстро испортить права на тысячи файлов. Не используйте режим 777 «для надёжности»: он даёт всем право писать, и это снижает безопасность. Если команда нужна для папки в домашнем каталоге, указывайте путь точно и сначала проверьте его через ls.
Порядок действий при ошибке «нет доступа»
Когда файл или папка не открываются, не спешите менять права у всех объектов подряд. Пройдите по шагам.
- Определите, кто владелец и какие права стоят: ls -l для файла, ls -ld для папки.
- Проверьте, что вы работаете из нужной учётной записи, а не из гостевой.
- Для внешнего накопителя посмотрите формат и параметры монтирования: том может быть подключён только для чтения.
- Если защита связана не с правами UNIX, а с конфиденциальностью, проверьте разрешения программ в настройках системы.
- Измените права точечно, только для нужного объекта, и сразу проверьте результат.
Некоторые каталоги защищены системой независимо от прав: изменять их не следует, и даже sudo может получить отказ. Это сделано ради целостности системы. Если вы сомневаетесь в безопасности действия, скопируйте данные в другое место и работайте с копией. Для общего контекста ознакомьтесь и со страницей про разрешения программ.
Расширенные атрибуты и карантин на загруженных файлах
Не все отказы связаны с правами UNIX. У файлов macOS есть расширенные атрибуты — дополнительные метки. Одна из них появляется у файлов, загруженных из интернета: система помечает их как скачанные, и при первом запуске показывает предупреждение. Это механизм проверки источника, а не ограничение прав.
Посмотреть наличие атрибутов позволяет ls -l@ или команда xattr с именем файла. Удалять метки без необходимости не следует: они часть защитных мер. Если вы уверены в происхождении файла, подтвердите открытие через стандартное окно системы, а не снимайте метки массово.
Отдельные ограничения накладывает и защита целостности системы: некоторые каталоги недоступны для записи даже администратору. Это нормальное поведение. Работайте в домашней папке, а системные места не трогайте.