macOS

Терминал macOS: полное руководство по правам доступа и chmod

Этот гайд подробно объясняет, как управлять правами доступа (permissions) к файлам и каталогам в macOS через Терминал. Вы научитесь использовать команды chmod, chown, проверять текущие настройки и решать типичные ошибки, такие как 'Operation not permitted'.

Обновлено 17 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:macOS Sonoma 14macOS Ventura 13macOS Monterey 12macOS Big Sur 11

Введение / Зачем это нужно

Управление правами доступа к файлам и папкам — это основа безопасности и стабильности любой UNIX-системы, включая macOS. В графическом интерфейсе Finder возможности настройки ограничены. Терминал с командами chmod, chown и chgrp даёт вам полный контроль.

С помощью этого гайда вы сможете:

  • Настроить выполнение скриптов (chmod +x).
  • Заблокировать/разблокировать доступ к конфиденциальным файлам.
  • Исправить ошибки Permission denied при установке ПО или работе с системами контроля версий (Git).
  • Настроить совместный доступ к файлам в многопользовательской среде.

Требования / Подготовка

  1. Операционная система: macOS 11 (Big Sur) или новее. Команды и синтаксис совместимы с более старыми версиями, но некоторые флаги могут отличаться.
  2. Терминал: Приложение «Терминал» (Terminal) в папке «Утилиты» или любая альтернативная оболочка (iTerm2, Hyper).
  3. Базовые знания: Понимание структуры файловой системы macOS (/Users, /Applications, /Library). Умение навигации (cd, ls).
  4. Права администратора: Для изменения прав на системные файлы или файлы других пользователей потребуется пароль администратора (использование sudo).

⚠️ Важно: Будьте предельно осторожны, меняя права в системных каталогах (/System, /usr, /bin). Это может привести к неработоспособности macOS или отдельных приложений. Всегда делайте резервные копии важных данных.

Пошаговая инструкция

Шаг 1: Проверьте текущие права доступа

Прежде чем что-то менять, нужно понять текущую конфигурацию.

  1. Откройте Терминал.
  2. Перейдите в нужную папку. Например, к вашему скрипту:
    cd ~/Documents/scripts
    
  3. Выполните команду для детального просмотра:
    ls -l
    
    Пример вывода:
    -rw-r--r--@ 1 alex  staff  1234 17 фев 10:30 my_script.sh
    drwxr-xr-x  5 alex  staff   160 17 фев 10:25 my_folder
    
    Расшифровка:
    • Первый символ (- или d): обычный файл (-) или каталог (d).
    • Следующие 9 символов: права для владельца (alex), группы (staff) и остальных.
      • r = read (чтение), w = write (запись), x = execute (выполнение).
      • - = отсутствие права.
    • Знак @ после прав означает наличие расширенных ACL (списков доступа).

Шаг 2: Измените права с помощью chmod

Команда chmod (change mode) меняет права доступа. Есть два основных синтаксиса: символьный (рекомендуется) и восьмеричный.

Символьный синтаксис (понятный)

Он позволяет точно указать, для кого и какое право менять.

  • u = владелец (user), g = группа (group), o = остальные (others), a = все (all).
  • + = добавить право, - = убрать, = = задать точно.
  • r, w, x = права.

Примеры:

# Дать владельцу право на выполнение (x) файла script.sh
chmod u+x script.sh

# Убрать у группы и остальных право на запись (w) для всех файлов в папке
chmod go-w /path/to/folder/*

# Установить одинаковые права для всех: чтение+выполнение для папки, чтение для файла
chmod a=rx folder/        # Для папки: r-x для всех
chmod a=r file.txt        # Для файла: r-- для всех

Восьмеричный (цифровой) синтаксис

Каждая цифра (0-7) — это битовая маска для rwx: r=4, w=2, x=1.

  • Первая цифра: права владельца.
  • Вторая цифра: права группы.
  • Третья цифра: права остальных.

Примеры:

# 755: владелец rwx (4+2+1=7), группа и остальные rx (4+1=5)
chmod 755 script.sh

# 644: владелец rw-, группа и остальные r--
chmod 644 config.txt

# 777: полные права для всех (используйте осторожно!)
chmod 777 public_folder/

Рекурсивное изменение

Чтобы изменить права для всех файлов и подпапок внутри каталога, используйте флаг -R (recursive):

chmod -R 755 /Users/alex/Projects/myapp/

💡 Совет: Всегда проверяйте, что вы находитесь в правильной папке, перед выполнением chmod -R. Ошибка может сломать права на сотни файлов.

Шаг 3: Используйте sudo для системных файлов

Если вы пытаетесь изменить права на файл, который вам не принадлежит (например, в /Applications или /Library), chmod завершится с ошибкой:

chmod: Operation not permitted

Это защита macOS. В этом случае используйте sudo (superuser do):

sudo chmod 755 /Applications/SomeApp.app/Contents/MacOS/SomeApp
  1. Система запросит пароль администратора (не тот, что при входе в macOS, а пароль учётной записи с правами администратора).
  2. Введите пароль (символы не отображаются) и нажмите Enter.

⚠️ Важно: sudo даёт вам полные права root. Не запускайте неизвестные скрипты с sudo. Убедитесь, что вы меняете права именно на тот файл, который нужен.

Шаг 4: Измените владельца файла (chown)

Иногда проблема не в правах (rwx), а в том, что файл принадлежит другому пользователю (например, после клонирования репозитория Git, где файлы созданы от root).

  1. Проверьте текущего владельца: ls -l файл.
  2. Смените владельца:
    # Сменить только владельца
    sudo chown newuser file.txt
    
    # Сменить владельца и группу одновременно
    sudo chown newuser:newgroup /path/to/folder/
    
    Часто используется sudo chown -R $(whoami) . в проекте, чтобы сделать текущего пользователя ($(whoami)) владельцем всех файлов в текущей папке (.). Используйте эту команду только в рамках своего проекта!

Шаг 5: Настройте расширенные ACL (опционально)

Стандартные права rwx для трёх субъектов (владелец, группа, другие) часто недостаточны. macOS поддерживает ACL (Access Control Lists) — списки, где можно дать права конкретному пользователю.

  1. Посмотреть ACL:
    ls -le
    
    Вывод может содержать строки после стандартных прав, например:
    0: group:staff allow read,write,execute,delete,add_file,add_subdirectory,file_inherit,directory_inherit
    
  2. Добавить правило ACL (например, дать пользователю ivan право на запись в файл):
    chmod +a "user:ivan allow write,delete" document.docx
    
  3. Удалить правило ACL (по его номеру из ls -le):
    chmod -a# 0 document.docx
    

ACL очень мощный инструмент, но для большинства бытовых задач хватает стандартных chmod.

Шаг 6: Восстановите стандартные права (если всё сломано)

Если вы случайно убрали все права и файлы стали недоступны, есть несколько путей исправления:

  1. Для ваших собственных файлов (документы, загрузки): Чаще всего помогает сброс прав на папку пользователя. Внимание: это может сбросить и некоторые настройки приложений.
    sudo chown -R $(whoami) ~/Documents
    sudo chmod -R u+rwX,go-w ~/Documents
    

    Флаг X даёт право на выполнение только для каталогов и уже исполняемых файлов.
  2. Для системных файлов/пакетов: Лучший способ — переустановить повреждённое приложение. Для системных компонентов Apple можно использовать diskutil (требует перезагрузки в Recovery Mode):
    # Сброс прав для текущего пользователя (выполняется из Recovery)
    diskutil resetUserPermissions / `id -u`
    

Проверка результата

После каждого изменения прав проверяйте результат командой ls -l (или ls -le для ACL). Убедитесь, что:

  • Владелец (alex) и группа (staff) указаны корректно.
  • Права (rwx) соответствуют ожидаемым.
  • Ошибки Permission denied при попытке выполнить/открыть файл исчезли.

Пример успешного выполнения:

$ ls -l script.sh
-rwxr-xr-x  1 alex  staff  1234 17 фев 10:30 script.sh  # Владелец может читать, писать, запускать

Возможные проблемы

1. Ошибка Operation not permitted даже с sudo

Это почти всегда System Integrity Protection (SIP). SIP защищает системные файлы от любых изменений, даже от root.

  • Решение: Отключите SIP (только если вы понимаете риски!). Перезагрузите Mac в Recovery Mode (зажмите Cmd+R при старте), откройте Терминал и выполните csrutil disable. Затем перезагрузитесь. После исправления прав не забудьте снова включить SIP (csrutil enable).

2. Ошибка Permission denied при попытке chmod или chown на внешнем диске

Файловая система на внешнем диске (особенно если он отформатирован как NTFS или exFAT) может не поддерживать UNIX-права.

  • Решение: Отформатируйте диск в APFS или Mac OS Extended (Journaled). Либо используйте sudo (если диск поддерживает права, но вы не владелец).

3. Изменения chmod не применяются к папке, но применяются к файлам внутри

Права на папку и её содержимое управляются независимо. Рекурсивный флаг -R должен решить проблему. Если нет — проверьте, не установлены ли на папку ACL, которые могут переопределять стандартные права. Просмотрите через ls -le.

4. После смены владельца (chown) файл стал недоступен для приложения

Приложение, запущенное от вашего пользователя, может требовать, чтобы файл принадлежал конкретному системному пользователю (например, _mysql для базы данных). В этом случае нужно сменить владельца на требуемого системного пользователя:

sudo chown _mysql:wheel /usr/local/mysql/data/

5. Не могу снять флаг «Заблокировано» (Locked) в Finder через Терминал

Этот флаг — часть расширенных атрибутов файла (флаг uchg — user immutable). Управляется командой chflags.

# Установить флаг блокировки
chflags uchg file.txt

# Снять флаг блокировки
chflags nouchg file.txt

FAQ

Q: Зачем вообще нужны эти цифры в chmod (755, 644)? Можно ли обойтись без них? A: Цифры — это компактная запись прав rwx. Да, можно использовать символьный синтаксис (chmod u+x), который часто нагляднее. Но восьмеричный быстрее для массовых операций и стандартен в документации.

Q: Что такое x для папки? Зачем папке право на выполнение? A: Для каталога права x (execute) означают «возможность войти в каталог» (cd) и «доступ к метаданным файлов внутри» (ls). Без x вы не сможете даже посмотреть список файлов в папке, даже если у неё есть r.

Q: Как сделать файл исполняемым для всех, но только для чтения? A: Нужно, чтобы владелец мог читать и выполнять, а группа и остальные — только читать. Это chmod 755 для файла. Но если вы хотите, чтобы все могли только читать, то chmod 644 (никакого x никому).

Q: Почему sudo chmod 777 не сработал на файле в /System? A: Потому что System Integrity Protection (SIP) блокирует любые изменения в защищённых областях, даже для root. Чтобы изменить такие файлы, нужно отключить SIP в Recovery Mode, что не рекомендуется без крайней необходимости.

Q: Как проверить, включён ли SIP? A: В Терминале выполните csrutil status. Если ответ System Integrity Protection status: enabled. — SIP активен.

Q: Можно ли задать права так, чтобы пользователь мог читать и выполнять, но не мог удалять или переименовывать файл? A: Стандартная модель rwx не поддерживает такое разделение (удаление — это право на запись в родительскую папку). Для тонкого контроля используйте ACL (chmod +a). Например: chmod +a "user:ivan allow read,execute" file — тогда иван сможет читать и запускать, но не сможет изменить или удалить файл (если у него нет прав write на родительскую папку).

Часто задаваемые вопросы

Как использовать sudo без ввода пароля в macOS?
В чём разница между chmod и chown?
Как посмотреть расширенные ACL (списки управления доступом) в macOS?
Почему после смены прав через chmod они не применяются?

Полезное

Проверьте текущие права доступа
Измените права с помощью chmod
Используйте sudo для системных файлов
Измените владельца файла (chown)
Настройте расширенные ACL (опционально)
Восстановите стандартные права macOS