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

Ubuntu Kinetic下cupsd的AppArmor Unix套接字创建权限问题求助

Ubuntu Kinetic下cupsd的AppArmor Unix套接字创建权限问题求助

在Ubuntu kinetic系统中,我在/var/log/syslog里看到很多AppArmor拒绝cupsd操作的日志,比如:

operation="create" class="net" info="failed type and protocol match" error=-13 profile="/usr/sbin/cupsd" comm="cupsd" family="unix" sock_type="dgram" protocol=0 requested_mask="create" denied_mask="create" addr=none

operation="create" class="net" info="failed type and protocol match" error=-13 profile="/usr/sbin/cupsd" comm="cupsd" family="unix" sock_type="stream" protocol=0 requested_mask="create" denied_mask="create" addr=none

我尝试在/etc/apparmor.d/local/usr.sbin.cupsd里添加规则来允许创建这类套接字:

unix (create) type=dgram,
unix (create) type=stream,

但重启apparmor和cups服务后问题还是没解决,有没有什么建议?

我之前处理过类似的AppArmor规则不生效的问题,给你几个实用的排查和解决方向:

  • 手动重新加载AppArmor配置:有时候仅重启systemd服务不会重新解析单个profile,建议手动强制加载cupsd的规则文件,执行以下命令:

    sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.cupsd
    sudo systemctl restart cups
    

    这个操作会确保新添加的规则被正确解析并应用。

  • 使用aa-logprof自动生成规则:手动写规则容易出现语法或匹配逻辑的问题,AppArmor自带的aa-logprof工具可以自动扫描系统日志中的拒绝事件,引导你添加正确的规则。执行:

    sudo aa-logprof
    

    工具会识别到cupsd的套接字创建拒绝请求,按照提示选择允许(allow),它会自动把正确的规则添加到/etc/apparmor.d/local/usr.sbin.cupsd中,避免手动编写的错误。

  • 检查规则的语法和完整性:确认你添加的规则末尾的逗号是否正确,另外有些场景下可能需要指定套接字的地址范围,比如如果cupsd是创建抽象套接字,可能需要补充addr=abstract,比如:

    unix (create) type=dgram addr=abstract,
    unix (create) type=stream addr=abstract,
    

    不过先试试前两种方法,aa-logprof会帮你自动匹配正确的参数。

  • 确认profile的生效状态:用以下命令查看cupsd的AppArmor profile是否处于强制(enforce)模式:

    sudo aa-status
    

    如果显示为complain模式,规则只会记录日志不会阻止操作,但你的日志是DENIED,所以应该是enforce模式,不过确认一下更稳妥。

备注:内容来源于stack exchange,提问作者jean-christophe manciot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 15:38:01