You need to enable JavaScript to run this app. Ansible切换非特权用户执行任务时临时文件权限设置失败问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Ansible切换非特权用户执行任务时临时文件权限设置失败问题求助

报错原因

本次报错和你之前在Ubuntu上遇到的问题本质一致,核心是目标主机缺少acl工具包导致Ansible无法正常处理非特权用户的临时文件权限:

  1. Ansible切换到非特权用户执行任务时,需要让目标用户有权限访问上传到目标主机的临时执行文件。如果系统安装了acl,Ansible会通过POSIX ACL规则直接给目标用户开放临时文件的访问权限,无需修改文件所有者。
  2. 你的目标主机是Scientific Linux 6.9,默认没有预装acl包,Ansible无法使用ACL调整权限,只能尝试用chown命令修改临时文件的所有者为user2。
  3. 你使用的adminek用户的sudo权限没有授予chown操作的相关权限,导致chown执行失败,触发权限报错。
解决方法

按照优先级从高到低推荐以下方案:

  • 方案一:目标主机安装acl包(最优解,符合官方推荐逻辑)
    在目标主机用root或sudo权限执行安装命令:
    yum install acl -y
    
    安装完成后无需额外配置,重新运行playbook即可正常执行。
  • 方案二:开启Ansible pipelining特性(无需装包,适用于无权限安装软件的场景)
    修改ansible.cfg的ssh_connection配置段,开启pipelining后Ansible会直接通过SSH管道传输执行代码,不会在目标主机创建临时文件,自然不会触发权限问题:
    [ssh_connection]
    pipelining = true
    
    注意:该方案仅对command、shell等轻量模块有效,部分需要上传文件执行的复杂模块仍可能报错。
  • 方案三:调整sudo规则(不推荐,会降低安全性)
    如果你既不能安装acl也无法开启pipelining,可以修改目标主机的sudoers配置,给adminek用户授予无需密码执行任意命令的权限,允许chown操作,配合你已经配置的allow_world_readable_tmpfiles = True参数即可解决问题,但会降低系统安全性,生产环境不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 03:06:09