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

Ansible如何仅为指定路径列表内的各级目录设置o-w权限且不修改内部文件

你提出的按/拆分路径收集各级目标目录的思路是当前场景下的最优解决方案,比正则匹配更稳定,不会出现路径特殊字符适配的边界问题,也能完全满足你的需求。

具体实现方案(基于Ansible环境)

步骤1:提取所有目标路径的各级目录并去重

- name: 收集所有需要设置权限的全路径目录
  ansible.builtin.set_fact:
    target_dirs: >-
      {{
        target_dirs | default([]) +
        [item] | ansible.utils.iterate('dirname') | reject('eq', '/') | list
      }}
  loop: "{{ __cronjob_paths }}"
  run_once: true

- name: 目录列表去重
  ansible.builtin.set_fact:
    target_dirs: "{{ target_dirs | unique }}"
  run_once: true

这里迭代调用dirname过滤器,会自动把/dirA/dirB拆分为/dirA/dirB、/dirA两个路径,全程保留全路径,不会匹配到其他位置的同名目录。
如果你的环境没有预装ansible.utils集合,也可以用基础Jinja2过滤器实现同样的拆分逻辑,核心逻辑保持一致即可。

步骤2:循环设置目录权限

- name: 为目标目录设置o-w权限
  ansible.builtin.file:
    path: "{{ item }}"
    mode: 'o-w'
    state: directory
  loop: "{{ target_dirs }}"

未添加recursive参数,只会修改当前目录本身的权限,不会影响目录下的任何文件或子目录内容。

方案优势

  • 全程基于全路径操作,完全不会误伤其他路径下的同名目录
  • 不使用recursive参数,完全不会修改目录内部文件的权限
  • 自带去重逻辑,多个路径共享父目录时不会重复执行操作,执行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:24:02