macOS 1Средняя

Permission denied в Terminal macOS: причины и решение за 5 минут

Статья расскажет, почему в macOS Terminal появляется ошибка Permission denied, и как быстро её устранить с помощью простых команд.

Обновлено 7 июля 2026 г.
5-10 мин
Средняя
FixPedia Team
Применимо к:macOS Monterey 12macOS Ventura 13macOS Sonoma 14

Что означает ошибка Permission denied

Когда вы вводите команду в Terminal на macOS и получаете сообщение «Permission denied» (или «Доступ запрещён»), система сообщает, что выполнение команды заблокировано из-за отсутствия необходимых прав. Ошибка обычно сопровождается кодом выхода 1. Это происходит, когда:

  • исполняемый файл не имеет права на выполнение,
  • скрипт загружен из ненадёжного источника и macOS блокирует его,
  • команда требует привилегированных прав (доступа администратора), но запущена без sudo,
  • настройки безопасности Terminal ограничивают автоматизацию или запуск скриптов.

Причины возникновения

  • Недостаток прав выполнения у файла или скрипта (chmod).
  • Отсутствие прав администратора для системных команд (например, brew, npm, docker).
  • Сбой в настройках безопасности (Gatekeeper, System Integrity Protection).
  • Повреждённые или неправильно настроенные разрешения на файлы или каталоги.
  • Запуск скрипта без предварительной проверки его исходного кода.

Способы решения

Способ 1: Исправьте права доступа к файлу

  1. Проверьте текущие права доступа с помощью ls -l /path/to/file.
  2. Если для пользователя отсутствует флаг x, выполните chmod +x /path/to/file.
  3. Убедитесь, что скрипт теперь можно запустить напрямую: ./script.sh.
# Пример: проверка и исправление прав доступа
ls -l /Users/username/Downloads/script.sh
chmod +x /Users/username/Downloads/script.sh
./script.sh

Способ 2: Используйте sudo для команд с привилегиями

  1. Определите команду, которая требует прав администратора (например, brew install …).
  2. Добавьте префикс sudo: sudo command.
  3. Введите пароль администратора, когда будет запрошен ввод.
# Пример: установка Homebrew с правами администратора
sudo brew install wget

Способ 3: Проверьте настройки безопасности Terminal

  1. Откройте Системные настройки → Безопасность и конфиденциальность → Конфиденциальность → Автоматизация.
  2. Убедитесь, что Terminal отмечен галочкой рядом с нужным приложением или скриптом.
  3. Если флажок отсутствует, добавьте приложение, чтобы разрешить автоматизацию.

💡 Совет: Разрешение автоматизации предотвращает блокировку скриптов системой безопасности при запуске из Terminal.

Способ 4: Переустановите приложение или переустановите повреждённые разрешения

  1. Удалите проблемное приложение (через Trash).
  2. Используйте Переустановить в Приложения → Утилиты → First Aid (если доступно) или переустановите пакет через brew reinstall.
  3. Проверьте права доступа снова с помощью ls -l.
# Пример: переустановка через Homebrew
brew reinstall node

Способ 5: Используйте sudo для изменения владельца или группы файла

  1. Определите правильного владельца (обычно ваш пользователь) с помощью whoami.
  2. Измените владельца с помощью sudo chown username:username /path/to/file.
  3. Проверьте права доступа: ls -l /path/to/file.
# Пример: изменение владельца файла
sudo chown $(whoami):$(whoami) /path/to/file

Профилактика

  • Проверяйте права доступа после скачивания скриптов: chmod +x filename.
  • Используйте sudo для всех команд, которые изменяют систему (установка пакетов, изменение конфигураций).
  • Обновляйте macOS и установленные приложения, чтобы устранить уязвимости.
  • Настройте Gatekeeper в Системных настройках → Безопасность и конфиденциальность → Общие, чтобы разрешить запуск только доверенного ПО.
  • Проверяйте безопасность скриптов перед их запуском; избегайте запуска неизвестных исходников.
  • Ведите журнал команд (syslog, loginitems) для отслеживания ошибок доступа.

Если ни один из способов не помог, ошибка может быть связана с более глубокой проблемой, например, с SIP (System Integrity Protection) или сбоем диска. В этом случае используйте fsck или обратитесь в поддержку Apple.

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

Почему команда в Terminal выдает сообщение «Permission denied»?
Как быстро проверить права доступа к файлу в Terminal?
Что делать, если команда требует прав администратора?
Как предотвратить повторение ошибки Permission denied?

Полезное

Проверьте права доступа к файлу
Сделайте скрипт исполняемым
Используйте sudo для команд с привилегиями
Проверьте настройки безопасности Terminal

Эта статья помогла вам решить проблему?