Введение / Зачем это нужно
Права доступа (permissions) в macOS определяют, какой пользователь или группа может читать, изменять или выполнять конкретный файл или папку. Они критически важны для безопасности системы и корректной работы программ. Неправильные права могут привести к ошибкам «Отказано в доступе», сбоям в работе софта или утечке данных. Этот гайд покажет, как быстро и безопасно изменить права доступа двумя основными способами: через командную строку (более мощный) и через Finder (удобный для простых случаев).
Требования / Подготовка
- Права администратора: Для изменения прав на файлы, которыми вы не являетесь владельцем, или в системных каталогах потребуется пароль администратора.
- Доступ к Терминалу: Приложение «Терминал» находится в
/Программы/Утилиты/или можно найти через Spotlight (Cmd+Пробел). - Понимание базовых прав: Знайте, кто является владельцем файла (владелец, группа, остальные) и что означают буквы
r(read),w(write),x(execute).
Шаг 1: Определите текущие права доступа
Перед изменением всегда проверьте, каковы текущие разрешения. Это поможет понять, что именно нужно поменять.
- Откройте Терминал.
- Перейдите в каталог с файлом или укажите полный путь. Например:
cd ~/Documents - Выполните команду
ls -lс именем файла:
Вывод будет похож на:ls -l myfile.txt
Строка-rw-r--r-- 1 user staff 1234 15 Feb 10:30 myfile.txt-rw-r--r--— это и есть права:-(тип файла,-— обычный файл,d— папка).rw-(владелец: чтение + запись).r--(группа: только чтение).r--(остальные: только чтение).
Шаг 2: Измените права через Терминал (команда chmod)
Это самый гибкий и точный способ. Команда chmod (change mode) работает с числовыми (восьмеричными) или символьными режимами.
Способ A: Символьный режим (проще для понимания)
Используйте символы u (user/владелец), g (group/группа), o (others/остальные), a (all/все) и операции + (добавить), - (удалить), = (установить точно).
- Добавить право на выполнение (
x) владельцу:chmod u+x script.sh - Убрать право на запись (
w) у группы и остальных:chmod go-w important.doc - Дать полные права (rwx) владельцу, только чтение и выполнение группе и остальным:
chmod u=rwx,go=rx program
Способ B: Восьмеричный (числовой) режим (быстро и точно)
Каждому классу (владелец, группа, другие) присваивается трехзначное число, где:
4= чтение (r)2= запись (w)1= выполнение (x)0= нет прав
Сумма этих значений дает итоговую цифру. Самый распространенный пример — 755:
7(4+2+1) = rwx для владельца.5(4+0+1) = r-x для группы.5(4+0+1) = r-x для остальных.
Примеры команд:
# Стандартные права для исполняемого скрипта/программы
chmod 755 myscript.sh
# Только владелец может читать и писать (private file)
chmod 600 private.key
# Полный доступ для всех (используйте осторожно!)
chmod 777 public_share.txt
Изменение прав на папку (рекурсивно): Добавьте флаг -R (recursive), чтобы применить права ко всем вложенным файлам и папкам.
chmod -R 755 my_folder/
⚠️ Важно: Рекурсивное изменение прав, особенно
777, может создать серьезные уязвимости в безопасности. Применяйте только к специфичным папкам общего доступа.
Шаг 3: Измените права через Finder (графический интерфейс)
Этот способ подходит для простых операций и не требует запоминания кодов.
- В Finder найдите нужный файл или папку.
- Нажмите на нем правой кнопкой мыши (или Ctrl+клик) и выберите «Свойства» (Get Info). Или выделите файл и нажмите
Cmd+I. - В нижней части окна «Свойства» найдите раздел «Права доступа» (Sharing & Permissions).
- Нажмите на значок замка в правом нижнем углу и введите пароль администратора, чтобы внести изменения.
- Вы увидите список пользователей и групп. Напротив каждого имени выпадающее меню с правами:
- Чтение и запись (Read & Write) — полный доступ.
- Только чтение (Read Only) — просмотр и копирование.
- Доступ на запись (Write Only) — только добавление/изменение (для папок «Сброс мусора»).
- Доступ запрещен (No Access) — полный запрет.
- Выберите нужный уровень доступа для каждого пользователя/группы.
- Для применения прав ко всем вложенным элементам (если это папка) нажмите кнопку «Исправить права доступа» (Apply to enclosed items). Эта опция доступна не для всех типов файлов и может не сработать для некоторых системных файлов.
Шаг 4: Проверка результата
После изменений убедитесь, что всё работает как задумано.
- Через Терминал: Снова выполните
ls -l <файл>и сравните строку прав с желаемой. - Через Finder: Окно «Свойства» должно отображать новые настройки.
- Практическая проверка: Попробуйте выполнить действие от имени другого пользователя (или в режиме гостя) — открыть, отредактировать или запустить файл. Должно получиться или, наоборот, быть запрещено в соответствии с новыми правами.
Возможные проблемы
Ошибка «Operation not permitted» в Терминале
- Причина: Вы пытаетесь изменить права на системный файл или папку, защищенную Системной целостностью (SIP, System Integrity Protection). Также может не хватать прав владельца.
- Решение:
- Убедитесь, что вы не пытаетесь менять права в
/System,/usr(кроме/usr/local),/bin,/sbinи других защищенных каталогах. Для пользовательских файлов SIP не мешает. - Если нужно изменить права на системный файл (например, для разработки), вам потребуется временно отключить SIP. Это делается через Режим восстановления (Restart, удерживайте
Cmd+R), запуск утилиты «Терминал» и командаcsrutil disable. После перезагрузки измените права, затем снова включите SIP (csrutil enable) для безопасности. - Проверьте, являетесь ли вы владельцем файла (
ls -lпоказывает ваше имя в третьем столбце). Если нет, используйтеsudo chownдля смены владельца передchmod.
- Убедитесь, что вы не пытаетесь менять права в
Права в Finder не меняются для некоторых файлов
- Причина: Finder использует расширенные атрибуты (ACL) и может не показывать все детали, установленные через
chmod. Для системных файлов или файлов, принадлежащих root, интерфейс Finder ограничен. - Решение: Используйте Терминал и команду
chmodдля полного контроля. Чтобы увидеть ACL, используйтеls -le.
После смены прав файл перестал работать
- Причина: Некоторые программы (особенно исполняемые файлы или скрипты) требуют конкретных прав. Например, скрипт без права на выполнение (
x) не запустится. - Решение: Установите рекомендуемые производителем ПО права. Часто для исполняемых файлов это
755, для конфигурационных —644. Если сомневаетесь, найдите инструкцию для вашей конкретной программы.
Рекурсивное изменение (chmod -R) затронуло не те файлы
- Причина: Ошибка в пути или использование
*без учета скрытых файлов (начинающихся с.). - Решение: Всегда проверяйте путь перед выполнением
chmod -R. Используйтеls -laдля отображения всех файлов, включая скрытые. Для изменения прав только на файлы (без папок) можно комбинировать сfind:find /путь/ -type f -exec chmod 644 {} \;.