Tech Troubleshooting:permission denied inbox

From wikibase

Проблема: Permission denied при записи в inbox агента[edit | edit source]

Симптомы[edit | edit source]

Агент не может записать файл в inbox:

PermissionError: [Errno 13] Permission denied: '/opt/agent-workspace/agents/{id}/inbox/...'

При этом:

  • Файлы в директории созданы, но с правами -rw-r--r--
  • Владелец файлов — agent_filum вместо agentops
  • Группа не имеет права на запись (g+w отсутствует)
  • Агент пытается создать inbox/ или писать в существующий, но получает отказ

Причина[edit | edit source]

Файлы inbox созданы с неправильным пользователем/группой или без групповых прав на запись. В multi-agent системе все агенты работают под общей группой agentops, но если файл создан от имени другого пользователя без g+w — другие агенты не могут писать.

Основные сценарии:

  1. Файлы созданы вручную от root или другого пользователя
  2. Нет sticky bit (g+s) — новые файлы наследуют первичную группу создателя, а не agentops
  3. Нет ACL (setfacl) — права не наследуются на вложенные директории
  4. Atomic write (temp → rename) создаёт файл с umask, который не даёт g+w

Решение[edit | edit source]

Шаг 1: Исправить владельца и группу[edit | edit source]

sudo chown -R :agentops /opt/agent-workspace/agents/{id}/inbox/

Шаг 2: Добавить групповую запись[edit | edit source]

sudo chmod -R g+w /opt/agent-workspace/agents/{id}/inbox/

Шаг 3: Установить sticky bit для наследования группы[edit | edit source]

sudo chmod g+s /opt/agent-workspace/agents/{id}/inbox/

Шаг 4: Настроить ACL для рекурсивного наследования[edit | edit source]

sudo setfacl -R -m g:agentops:rwX /opt/agent-workspace/agents/{id}/inbox/

sudo setfacl -d -m g:agentops:rwX /opt/agent-workspace/agents/{id}/inbox/

Проверка[edit | edit source]

ls -la /opt/agent-workspace/agents/{id}/inbox/
getfacl /opt/agent-workspace/agents/{id}/inbox/

Ожидаемый результат:

drwxrwsr-x+ ... agentops agentops  inbox/

Знак + означает наличие ACL, s в группе — sticky bit.

Предотвращение[edit | edit source]

  • Всегда создавайте файлы inbox с группой agentops
  • Используйте atomic write: сначала write(temp_file), затем os.rename()
  • Проверяйте umask перед созданием файлов: os.umask(0o002)
  • В скриптах развёртывания применяйте все 4 команды из раздела «Решение»
  • Настройте systemd или cron на периодическую проверку прав inbox

Ссылки[edit | edit source]

  • /opt/agent-workspace/agents/ — корневая директория агентов
  • getfacl, setfacl — ACL утилиты Linux