Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

MIXMONITOR_PERM_DENIED IP-Телефония и СКУД

Asterisk: Unable to open audio file for recording (Permission denied) в MixMonitor

Обновлено: 24.08.2026 · Официальная документация ↗
  • В логах появляется ошибка: WARNING[...]: app_mixmonitor.c: Unable to open audio file /var/spool/asterisk/monitor/...: Permission denied.
  • Записи разговоров не сохраняются на диск или имеют нулевой размер (0 байт).
  • Команда MixMonitor в плане набора завершается с ошибкой без прерывания самого вызова.
  • Примонтированные сетевые хранилища (NFS/CIFS) не позволяют процессу Asterisk создавать новые подпапки.

1. Исправление прав доступа к каталогу записей

Убедитесь, что директория для хранения записей принадлежит пользователю и группе asterisk:

mkdir -p /var/spool/asterisk/monitor
chown -R asterisk:asterisk /var/spool/asterisk/monitor
chmod -R 755 /var/spool/asterisk/monitor

2. Проверка контекстов SELinux (для RHEL / Rocky Linux)

# Проверка текущего контекста безопасности
ls -dZ /var/spool/asterisk/monitor

# Восстановление стандартного контекста
semanage fcontext -a -t asterisk_spool_t "/var/spool/asterisk/monitor(/.*)?"
restorecon -Rv /var/spool/asterisk/monitor

3. Автоматическое создание поддиректорий в Dialplan (extensions.conf)

Если путь к файлу включает динамические подкаталоги по датам (ГГГГ/ММ/ДД), создавайте их до запуска MixMonitor с помощью функции SHELL или опции m:

[internal]
exten => _X.,1,NoOp(Starting Call Recording)
 same => n,Set(REC_DIR=/var/spool/asterisk/monitor/${STRFTIME(${EPOCH},,%Y/%m/%d)})
 same => n,Set(REC_FILE=${REC_DIR}/${UNIQUEID}.wav)
 same => n,MixMonitor(${REC_FILE},b)
 same => n,Dial(PJSIP/${EXTEN},30)

4. Проверка владельца процесса Asterisk

ps aux | grep asterisk
# Если процесс запущен от root или другого пользователя, исправьте /etc/default/asterisk (или /etc/sysconfig/asterisk):
# AST_USER="asterisk"
# AST_GROUP="asterisk"
💡 Практика специалистов: Никогда не выполняйте постобработку записей (конвертацию в mp3, отправку в S3) синхронно в диалплане. Используйте post-command параметр MixMonitor(file.wav,b,/path/to/async_script.sh ^{MIXMONITOR_FILENAME}) для запуска фоновых задач.

Частые вопросы (FAQ)

Почему MixMonitor не может создать файл, если директория существует?

Если запись идет во вложенную структуру папок (например, /monitor/2026/03/30/), и этих папок еще нет на диске, fopen() вернет ошибку, если у процесса нет прав на создание вложенных каталогов.

Что делает флаг 'b' в приложении MixMonitor?

Флаг 'b' указывает MixMonitor начинать запись аудио только после того, как вызываемый канал ответит на вызов (состояние UP/Answered).

Как монтировать NFS шару для записей MixMonitor без проблем с правами?

Указывайте опции монтирования: no_root_squash, anonuid=..., anongid=... или монтируйте с явным сопоставлением UID/GID пользователя asterisk.

Какой формат аудио наименее требователен к ресурсам при записи?

Формат .wav (без сжатия) или .alaw/.ulaw требует минимум CPU, так как Asterisk сохраняет медиапоток без промежуточного перекодирования (transcoding).

Полезные материалы
Рекомендуем