Назад | Перейти на главную страницу

Разрешение доступа к сокету в apparmor

Я использую php-fpm для запуска приложения, к которому требуется доступ, например. /var/run/redis/redis-server.sock

В aa-Пожаловаться или aa-enforce журналы захватываются хостом (а не контейнером) и появляются в /var/log/auditd/audit/log например

type=AVC msg=audit(1572212584.295:206555): apparmor="DENIED" operation="connect" info="Failed name lookup - disconnected path" error=-13 namespace="root//lxd-containername_<var-lib-lxd>" profile="/usr/sbin/php-fpm7.2" name="run/redis/redis-server.sock" pid=20078 comm="php-fpm7.2" requested_mask="wr" denied_mask="wr" fsuid=100033 ouid=100113

Такое правило, как:

/var/run/redis/redis-server.sock rw

не предотвращает отказ в доступе. Как я могу разрешить этот доступ?

Я не уверен, почему в сообщении журнала отсутствует /var/ в стороне от дороги.

EDIT: похоже, что lxd / lxc не виноват, я воссоздал это в vm.

Я могу хотя бы ответить почему name= не было косой черты и побочных эффектов. Ядро не заставляет открывать дескрипторы, чтобы включить начальную косую черту, у какого устройства есть проблемы с. Обходной путь - добавить attach_disconnected к флагам вашего профиля apparmor. Это выглядело бы примерно так ...

profile usr.local.bin.taco_tuesday flags=(attach_disconnected) {
  [stuff]
  /run/redis/redis-server.sock rw
}

С помощью /run вместо того /var/run так как /var/run очень часто является символической ссылкой на /run, а AppArmor применяет только реальные пути.