2026: списки разрешений MCP файловой системы OpenClaw, корни песочницы POSIX и контроль blast radius на Mac mini ProxyMac
Агенты OpenClaw, оркестрирующие сборки на арендованных Mac mini M4 в Гонконге, Японии, Корее, Сингапуре и США, часто включают upstream-сервер MCP файловой системы, чтобы модели сравнивали репозитории или читали логи. Удобство оборачивается катастрофой, если argv-корни включают весь домашний каталог—MCP наследует POSIX-права Unix-пользователя шлюза, а не идеалы внутренней политики. Плейбук даёт (1) жёсткую модель угроз, (2) трёхуровневый контракт каталогов чтение/запись/scratch, (3) матрицу прав для учёток автоматизации, (4) семишаговый рунбук ужесточения и (5) шаги при полуночном chmod -R 777. Мониторьте отказы open(2) в минуту: длительные всплески ENFILE/EMFILE часто означают, что агент долбит запрещённые деревья. Сочетайте с настройкой MCP, секретами и Keychain и TCC macOS, чтобы защита была многослойной, а не декоративной.
Ежеквартальные учения: расширить argv в staging, посмотреть JSONL-алерты, за 30 минут снова сузить—это лучше импровизации в проде.
Регулируемые отрасли должны связывать читаемые пути с классификацией данных; ошибка chmod в зоне PCI может вызвать обязанности по уведомлению.
Почему MCP файловой системы опаснее браузерной автоматизации на macOS-шлюзах
В отличие от ограничений headless Chromium, MCP может обходить любой путь, читаемый UID демона—включая SSH-ключи в ~/.ssh при неверной конфигурации домашних каталогов. Prompt injection не требует RCE: достаточно вежливого cat ~/.aws/credentials. Области как IAM-роли: deny-by-default, тикет на каждое включение, предположение о злонамеренных промптах еженедельно.
- Цифры: команды с JSONL часто видят 120–400 файловых операций за длинную сессию агента.
- Apple Silicon: клоны APFS могут случайно делить снимки inode между средами.
- Аудит: хэши путей в JSONL-диагностику для SOC без сырых имён клиентов.
Трёхуровневая allowlist: корни чтения, записи и scratch
| Уровень | Назначение | Типичный путь APFS | Разрешённые глаголы MCP |
|---|---|---|---|
| Только чтение | SDK вендоров, утверждённые документы | /srv/oc-mcp/read/sdk-cache | Список + чтение байтов |
| Запись | Артефакты, сборочные выходы | /srv/oc-mcp/write/build-out | Создание/дозапись в поддереве |
| Scratch | Эфемерные куски diff | /srv/oc-mcp/scratch/$JOB_ID | Всё кроме symlink-escape |
Не связывайте scratch симлинками с write—при дрейфе ACL macOS может разрешить обход. После апгрейдов аудит chmod -h.
Внешние SSD: после смены железа перезапускайте шлюз и автоматически инвалидируйте scratch младше 24 часов.
Матрица POSIX: пользователи LaunchDaemon ↔ области файловой системы
| Unix-учётка | Основная группа | umask | Владеемые каталоги |
|---|---|---|---|
automation | staff | 027 | только /srv/oc-mcp/* |
builder (интерактив) | developer | 022 | Деревья Homebrew, не MCP-корни |
root | wheel | n/a | Никогда не запускать MCP от root—снижать привилегии до exec |
sudo chown -R automation:staff /srv/oc-mcp, затем запрет sudo в LaunchAgents—скрипты break-glass в git с контрольными суммами.
Семишаговый рунбук ужесточения перед продом MCP файловой системы
- Заморозить инвентарь: каждый argv-корень MCP в CM—нет теневых копий в Downloads.
- Создать папки/тома APFS со sticky при необходимости; scratch по job ID с датой в префиксе.
- Урезать окружение: по возможности
HOME=/srv/oc-mcp svcв LaunchAgents. - Секретный файрвол: токены вне читаемых корней или Keychain по гайду.
- Линт промптов: middleware режет абсолютные пути вне allowlist.
- Канарейка: в staging читать
../../etc/passwd—ждём детерминированные отказы в логах. - Ежеквартально: diff
find /srv/oc-mcp -perm +020с baseline—шире = откат.
Реагирование при чтении за пределами контракта
JSONL с неожиданными префиксами или всплесками FD — считать компрометацию: (1) launchctl bootout plist MCP, (2) при наличии Time Machine — tmutil compare, (3) ротация облачных PAT рядом с читаемыми каталогами, (4) уведомление клиентов при регулируемых данных, (5) гвардрейлы regex для промптов до появления middleware.
Временные метки с точностью ±5 минут для финансовой корреляции.
После сдерживания — виноватый без обвинений: какие argv были шире политики, кто одобрил, какой тест пропустил, как долго JSONL хранил доказательства, помогла бы изоляция сред. Ответы с ссылками на PR.
Вопросы и ответы
Помогают ли профили песочницы macOS? Только при обёртке бинарников MCP—чаще allowlist, так как upstream не подписан.
Удалённый NFS? Избегать из-за задержки; если нужно — только чтение и мониторинг TCP-зависаний.
APFS без учёта регистра? Нормализовать пути до экспозиции MCP.
Тесты symlink? ln -s ../../etc/hosts в scratch, ожидать ошибки прав и запись в JSONL—повторять после минорных апгрейдов Node.
Почему Mac mini ProxyMac подходит для строгой MCP-позиции
Однотенантные M4 дают предсказуемые пути без соседних контейнеров, тихо монтирующих ваше /srv; Apple Silicon сохраняет пропускную способность при массовом чтении в HK / JP / KR / SG / US. Сравните на странице цен, стандартизируйте удалёнку через справочный центр, держите VNC для визуальной проверки «временного» chmod.
Области MCP как прод IAM
OpenClaw · Apple Silicon M4 · HK / JP / KR / SG / US