Я использую 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 применяет только реальные пути.