chmod 命令来保留文件权限

chmod 命令来保留文件权限

这是 Ansible 自动化的一部分,我必须运行单个chmod命令并读取用户的权限。因此,

chmod -R $fileperm <filename>

但是,有时用户可能不提供任何内容,fileperm因此$fileperm为空,在这种情况下,文件权限应保持不变,但上述命令失败。

我不希望两个chmod命令具有不同的when条件。

如果可能的话,您能否建议我如何适应用户是否在同一命令中提供或不提供权限?我目前正在使用 Ansible 的command模块来执行chmod.

答案1

不要chmod通过command或来电shell。使用file模块设置权限,参见文档。这是幂等的。该模块将检查文件/目录的当前状态,并且仅在必要时才更改它。

在这种情况下,您添加此任务

- set_fact:
    files:
      - name: file1
        mode: 0755
      - name: file2
      - name: file3
        mode: 0644

- file:
    path: "{{ item.name }}"
    mode: "{{ item.mode | default(omit) }}"
  loop: "{{ files }}"

我不确定“有时用户可能不提供”是什么意思。 Ansible 没有什么交互性。所以我不确定你的意思。另外,您正在谈论 bash 变量,例如$fileperm. Ansible 没有“bash vars”。它们是事实并使用 Jinja 来评估它们。

相关内容