Tech Troubleshooting:permission denied inbox
Проблема: 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 — другие агенты не могут писать.
Основные сценарии:
- Файлы созданы вручную от
rootили другого пользователя - Нет sticky bit (
g+s) — новые файлы наследуют первичную группу создателя, а неagentops - Нет ACL (
setfacl) — права не наследуются на вложенные директории - 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