如何将含PHP/JS/CSS/PDF的目录递归加入fapolicyd白名单?
如何用fapolicyd将特定目录及指定文件类型加入白名单
可以将包含PHP、JS、CSS和PDF文件的整个目录结构加入fapolicyd白名单,以下是针对你遇到的SFTP上传拦截问题的具体解决方案:
问题分析
从调试日志:
rule=11 dec=deny_audit perm=open auid=1000 pid=3005001 exe=/usr/libexec/openssh/sftp-server : path=/data/www/nbsprod/public_html/fax.php ftype=text/x-php trust=0
可知,sftp-server尝试访问的PHP文件未被fapolicyd标记为可信(trust=0),被编号11的拒绝规则拦截。切换到宽容模式后允许上传,说明是规则拦截导致的问题。
解决方案步骤
1. 添加目录及文件类型到信任源
fapolicyd通过信任源管理可信文件,创建自定义信任配置文件:
vi /etc/fapolicyd/trust.d/00-www-trust.conf
写入以下规则(匹配目录下指定类型的文件并标记为可信):
# 信任/data/www目录下的PHP、JS、CSS、PDF文件 dir=/data/www/ ftype=text/x-php trust=1 dir=/data/www/ ftype=application/javascript trust=1 dir=/data/www/ ftype=text/css trust=1 dir=/data/www/ ftype=application/pdf trust=1
提示:可以用
file --mime-type /path/to/file.php命令确认文件的MIME类型,确保和ftype值一致。
2. 更新信任数据库
配置完成后,更新fapolicyd的信任缓存:
fapolicyd-cli --update
3. 调整访问规则(若信任源配置仍无效)
如果添加信任源后还是被拦截,需要创建优先级更高的允许规则(规则编号小于11):
vi /etc/fapolicyd/rules.d/10-allow-sftp-www.conf
写入允许sftp-server访问目标目录指定文件类型的规则:
allow perm=open exe=/usr/libexec/openssh/sftp-server dir=/data/www/ ftype=text/x-php allow perm=open exe=/usr/libexec/openssh/sftp-server dir=/data/www/ ftype=application/javascript allow perm=open exe=/usr/libexec/openssh/sftp-server dir=/data/www/ ftype=text/css allow perm=open exe=/usr/libexec/openssh/sftp-server dir=/data/www/ ftype=application/pdf
4. 重启fapolicyd服务
systemctl restart fapolicyd
5. 验证效果
重新执行SFTP上传操作,或再次用调试模式确认拦截是否消失:
fapolicyd --debug-deny 2> fapolicy-test.output & # 执行上传后查看日志 cat fapolicy-test.output
内容的提问来源于stack exchange,提问作者a coder
相关产品推荐
相关产品推荐

