我正在为 php(特别是 8.1)编写一个 apparmor 配置文件,但我的 php 特定配置(这是针对运行 dokuwiki 的网络服务器)遇到了一些问题。
我已将所有功能列入白名单,但最后一点是 php 想要对“/”进行读写访问。显然这不是好的行为,我不确定它为什么需要这样做?我没有编写 dokuwiki 使用的任何 php 脚本,所以这是他们的 php 代码的问题还是我可以通过配置修复的问题?
Apr 02 11:52:31 wiki audit[203102]: AVC apparmor="DENIED" operation="file_mmap" profile="/usr/sbin/php-fpm8.1" name="/" pid=203102 comm="php-fpm8.1" requested_mask="wr" denied_mask="wr" fsuid=0 ouid=0
Apr 02 11:52:31 wiki kernel: audit: type=1400 audit(1680450751.151:3038): apparmor="DENIED" operation="file_mmap" profile="/usr/sbin/php-fpm8.1" name="/" pid=203102 comm="php-fpm8.1" requested_mask="wr" denied_mask="wr" fsuid=0 ouid=0
我的简历:
include <tunables/global>
/usr/sbin/php-fpm8.1 flags=(attach_disconnected) {
include <abstractions/base>
include <abstractions/nameservice>
include <abstractions/openssl>
include <abstractions/php>
include <abstractions/user-tmp>
capability net_admin,
capability dac_override,
capability kill,
capability chown,
capability setgid,
capability setuid,
/usr/sbin/php-fpm8.1 mr,
owner /proc/sys/kernel/random/boot_id r,
owner /run/systemd/userdb/ r,
owner /var/log/php* w,
# Data Directory
owner /var/www/dokuwiki/** rw,
}
php抽象:
# shared snippets for config files
/etc/php/{7??,8??}/** r,
# Xlibs
/usr/X11R6/lib{,32,64}/lib*.so* mr,
# php extensions
/usr/lib{64,}/php{,7*,8*}/*/*.so mr,
# ICU (unicode support) data tables
/usr/share/icu/*/*.dat r,
# php sock and pid files
/run/php/** rw,
# php session mmap socket
/var/lib/php{,7*,8*}/session_mm_* rwlk,
# file based session handler
/var/lib/php{,7*,8*}/sess_* rwlk,
/var/lib/php{,7*,8*}/sessions/* rwlk,
# php libraries
/usr/share/php{,7*,8*}/ r,
/usr/share/php{,7*,8*}/** mr,
# MySQL extension
/usr/share/mysql/** r,
# Zend opcache
/tmp/.ZendSem.* rwlk,
附注:我可以设置此选项:
owner / rw,
这满足了 php 的要求。但仍然让我感到不舒服,有没有办法安全地授予此访问权限,或者所有者同样糟糕?