Ошибка command not allowed появляется в терминале, когда система блокирует выполнение команды из-за ограничений прав доступа, политик безопасности или настроек конкретной оболочки. В отличие от «command not found» (команда не найдена), здесь команда существует, но её запуск запрещён — и это принципиально разные ситуации, требующие разных решений.

Сообщение встречается в macOS, Linux, на сетевом оборудовании (маршрутизаторы, коммутаторы), в SSH-сессиях и в некоторых приложениях со встроенной командной строкой. Точная формулировка и причина зависят от среды, поэтому первый шаг — определить, где именно возникла ошибка.

Где возникает ошибка command not allowed

Чаще всего с этим сообщением сталкиваются в четырёх сценариях. Во-первых, в терминале macOS при запуске утилит, заблокированных системой защиты. Во-вторых, в Linux при работе через ограниченную оболочку rbash или при политиках sudo, запрещающих конкретные команды. В-третьих, на сетевом оборудовании, где у учётной записи недостаточный уровень привилегий. В-четвёртых, в SSH-сессиях с принудительными ограничениями через authorized_keys или ForceCommand.

Обратите внимание на точный текст ошибки и контекст её появления. Формулировки вроде command not allowed, operation not permitted и permission denied указывают на разные механизмы блокировки, и путать их не стоит.

💡

Command not allowed означает, что команда существует, но система намеренно запрещает её выполнение — искать нужно ограничение прав, а не отсутствующий файл.

Проверка прав доступа и sudo

Наиболее частая причина — команда требует привилегий, которых у текущей сессии нет. Проверьте, не предназначена ли она для запуска через sudo:

sudo ваша_команда

Если после sudo появляется сообщение вида user is not allowed to execute, значит, администратор ограничил список разрешённых команд в файле sudoers. В этом случае самостоятельно обойти ограничение нельзя — нужно обратиться к администратору системы или, если это ваш компьютер, проверить конфигурацию через sudo visudo.

Также убедитесь, что у исполняемого файла выставлен бит запуска. Проверить права можно командой ls -l путь_к_файлу, а при необходимости добавить право на исполнение:

chmod +x путь_к_файлу

☑️ Базовая диагностика command not allowed

Выполнено: 0 / 5

Ограниченная оболочка и политики безопасности

Если вы работаете на сервере или корпоративной машине, ваша оболочка может быть ограниченной — например, rbash (restricted bash). В таком режиме запрещены смена каталога через cd, запуск команд с указанием пути и перенаправление вывода. Проверить тип оболочки можно командой echo $SHELL или echo $0.

⚠️ Внимание: попытки обойти ограниченную оболочку или политики sudo на чужом или корпоративном сервере могут нарушать правила организации и привести к блокировке учётной записи. Согласуйте расширение прав с администратором.

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

📊 Где вы столкнулись с ошибкой command not allowed?
Терминал macOS
Linux (локально или сервер)
SSH-сессия на удалённом сервере
Сетевое оборудование (роутер, коммутатор)

Ошибка на сетевом оборудовании и в SSH

На маршрутизаторах и коммутаторах (Cisco, MikroTik и других) сообщение о запрете команды обычно означает недостаточный уровень привилегий учётной записи. Многие устройства разделяют режимы: просмотр конфигурации доступен всем, а изменение настроек — только после перехода в привилегированный режим, например через команду enable на оборудовании Cisco. Набор доступных команд и синтаксис различаются между вендорами и моделями, поэтому ориентируйтесь на официальную документацию конкретного устройства.

В SSH-сессиях администратор может принудительно ограничить набор команд через параметр command= в файле authorized_keys или директиву ForceCommand в конфигурации сервера. Тогда любая команда, кроме разрешённой, будет отклонена. Это штатное поведение, а не сбой — например, так настраивают доступ только для резервного копирования.

💡

Если ошибка возникает только по SSH, но та же команда работает в локальной консоли сервера — почти наверняка дело в ограничениях SSH-конфигурации, а не в самой команде.

Сравнение похожих ошибок терминала

Правильная диагностика начинается с отличия похожих сообщений. Каждое указывает на свой механизм блокировки:

СообщениеЧто означаетКуда смотреть
command not foundКоманда не найдена в PATHУстановка пакета, переменная PATH
command not allowedКоманда запрещена политикой или оболочкойsudoers, rbash, привилегии
permission deniedНет прав на файл или действиеПрава файла, владелец, chmod
operation not permittedБлокировка на уровне системыSIP, флаги файлов, capabilities
user is not in the sudoers fileУчётная запись не имеет прав sudoАдминистратор, настройка sudoers

Как видно, command not allowed почти всегда указывает на намеренно настроенное ограничение, а не на случайный сбой. Поэтому «лечится» она не переустановкой, а изменением прав или политики.

Что делать, если ничего не помогло

Если базовые проверки не дали результата, двигайтесь от простого к сложному. Сначала уточните, чья это система: на рабочем или арендованном сервере расширение прав решается только через администратора или поддержку хостинга. На собственном устройстве проверьте системные журналы — в Linux это journalctl или логи в /var/log/, в macOS — приложение «Консоль». Записи о блокировке часто содержат точную причину запрета.

⚠️ Внимание: не отключайте SIP в macOS и не правьте sudoers «вслепую», добавляя себе полные права без понимания последствий. Эти механизмы защищают систему от необратимых повреждений, а ошибка в sudoers способна полностью лишить вас административного доступа.
Как посмотреть разрешённые команды sudo

Выполните команду sudo -l — система покажет список команд, которые вашей учётной записи разрешено запускать через sudo. Если нужной команды в списке нет, её сможет добавить только администратор через visudo.

Если ошибка появляется внутри конкретного приложения со встроенной командной строкой (например, в СУБД, системах мониторинга или CLI-утилитах), изучите документацию этого приложения: многие из них имеют собственную модель ролей, где команды открываются только после назначения соответствующей роли пользователю.

💡

Диагностика строится по цепочке: точный текст ошибки → среда возникновения → права и sudo → ограничения оболочки или SSH → системные журналы.

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

Чем command not allowed отличается от command not found?

Command not found означает, что система не нашла исполняемый файл команды в путях поиска. Command not allowed — что команда существует, но её выполнение запрещено политикой безопасности, настройками sudo или ограниченной оболочкой.

Можно ли обойти ошибку, добавив sudo?

Только если ваша учётная запись включена в sudoers и команда не запрещена явно. Проверить доступные права можно командой sudo -l. Если команда запрещена политикой, добавление sudo не поможет.

Почему ошибка возникает на роутере или коммутаторе?

Сетевое оборудование разграничивает уровни привилегий: часть команд доступна только в привилегированном режиме или учётным записям с повышенными правами. Порядок перехода зависит от вендора и модели — сверяйтесь с документацией устройства.

Ошибка появляется только по SSH — в чём причина?

Вероятно, администратор ограничил сессию через параметр command= в authorized_keys или директиву ForceCommand в конфигурации SSH-сервера. Это штатное ограничение, снять которое может только администратор сервера.

Опасно ли отключать SIP в macOS ради запуска команды?

Да. System Integrity Protection защищает системные файлы и процессы от изменений. Отключать её стоит только при полном понимании рисков и желательно временно, вернув защиту после выполнения задачи.