如何使用Ansible为目录设置多个用户组的访问权限
实现多用户组目录权限配置方案
Linux原生文件权限体系仅支持单属主、单属组,要为第二个用户组td-agent开放权限,推荐使用ACL(访问控制列表)实现,这是最安全且不影响原有权限配置的方案,操作步骤如下:
- 先确认系统安装ACL依赖包,Ansible配置示例:
# RHEL/CentOS系列系统用yum,Debian/Ubuntu系列替换为apt模块即可 - name: Install acl dependency package yum: name: acl state: present
- 使用Ansible的
acl模块为td-agent组递归配置/app目录的读、执行权限(目录需要执行权限才能进入访问内部文件),如果需要后续新建的文件/目录也自动继承该权限,可添加默认ACL规则,配置示例:
- name: Grant td-agent group access permission for /app acl: path: /app entity: td-agent etype: group # 大写X代表仅为目录添加执行权限,不会给普通文件额外添加执行位,适配日志目录场景 permissions: rX recursive: yes # 新增default参数则规则会继承到路径下新创建的文件/目录 default: yes state: present
配置完成后可通过getfacl /app/app1/product/001.log命令验证权限是否生效。
mode: o+rx的权限变更说明 使用o+rx这种符号模式修改权限时,仅会修改其他用户权限位,为其他用户新增读、执行权限,不会改动属主、属组的现有权限位,所以app_user和app_group的原有权限不会发生变化。
但该操作存在安全风险:会放开系统内所有普通用户对/app目录的读访问权限,不符合最小权限原则,不推荐使用该方式满足td-agent的访问需求。
内容的提问来源于stack exchange,提问作者Miantian
相关产品推荐
相关产品推荐

