You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL设置secure_file_priv为空仍无法读文件,如何关闭AppArmor对mysqld的保护?

问题说明

已将secure_file_priv设为空,目标文件存在内容,但MySQL 5.7.33-0ubuntu0.16.04.1执行LOAD_FILE('/tmp/flag')返回NULL。

  • 以mysql用户执行cat /tmp/flag可正常读取:
    $ su -c 'cat /tmp/flag' mysql
    flag{444}
    
  • 文件权限详情:
    -rwxrwxrwx 1 mysql mysql   10 7  18 11:21 flag
    -rwxrwxrwx 1 mysql root    10 7  18 14:23 flag1
    -rwxrwxrwx 1 kali  kali    11 7  18 14:25 flag2
    
  • 仅flag2无法通过LOAD_FILE读取,sudo aa-status显示AppArmor已加载,/usr/sbin/mysqld处于强制模式。
关闭AppArmor对mysqld的保护方法

临时生效(重启后恢复)

  • 将mysqld的AppArmor规则切换为投诉模式(仅记录行为,不阻止操作):
    sudo aa-complain /etc/apparmor.d/usr.sbin.mysqld
    
  • 或者直接卸载当前mysqld的AppArmor配置:
    sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld
    

永久生效

方法1:修改规则允许特定文件

编辑/etc/apparmor.d/usr.sbin.mysqld配置文件,在规则列表中添加允许读取目标文件的条目(以/tmp/flag2为例):

/tmp/flag2 r,

保存文件后重启AppArmor服务:

sudo systemctl restart apparmor

方法2:完全关闭mysqld的AppArmor保护

  • 重命名或删除mysqld的AppArmor配置文件:
    sudo mv /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/usr.sbin.mysqld.disabled
    
  • 重启AppArmor服务使配置生效:
    sudo systemctl restart apparmor
    

方法3:全局禁用AppArmor(不推荐)

若无需AppArmor保护任何系统程序,可直接禁用服务:

sudo systemctl stop apparmor
sudo systemctl disable apparmor

内容的提问来源于stack exchange,提问作者wgf4242

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 03:07:41