SaltStack - 更改文件权限

时间:2017-02-28 13:07:15

标签: linux salt-stack

我需要使用SaltStack在Linux中更改文件权限。

对于目录,我可以使用file.directory函数,例如:

file.directory:
  - user: root
  - group: root
  - mode: 400

但我应该将什么用于文件?

我可以使用:

  file.managed:
    - user: root
    - group: root
    - mode: 444

它有效,但我有一条警告信息:

  

[警告]文件状态:/boot/grub/grub.cfg - 来源'也不   '内容'也不是内容_pillar'也不是&contents; grains'定义了,   然而'替换'被设置为“真实”。由于没有消息来源取代   文件,'替换'已被设置为“假”'避免读取文件   不必要的。

它需要source指令,但我不想将文件下载到minion,我只需要更改文件权限。

file.exists函数没有usergroupmode指令。

我有哪些选择?

3 个答案:

答案 0 :(得分:7)

你得到的警告信息几乎都说明了。如果您指定replace: False,则消息将消失:

file.managed:
- user: root
- group: root
- mode: 444
- replace: False

执行cmd.run显然会删除此消息,但它过于通用,更像是一种解决方法。更多方法是使用file.managed状态,因为这是它的设计目的。

答案 1 :(得分:2)

如果文件不是由salt管理的,您可能需要使用cmd.run并直接调用unix命令:

TypeError: Cannot read property 'type' of undefined

答案 2 :(得分:0)

状态file.directory仅在一种状态下递归设置文件和/或目录的权限。比即使没有任何改变都将被执行的cmd.run更好(这将与“状态”的哲学背道而驰)。请注意,在这种情况下,file.managed是不够的。

otrs_enforce_perms:
  file.directory:
    - name: /opt/otrs
    - user: otrs
    - group: otrs
    - dir_mode: 770
    - file_mode: 660
    - follow_symlinks: True
    - recurse:
      - user
      - group
      - mode

如果recurse选项下包含ignore_files或ignore_dirs,则文件或目录将分别保持不变。