我需要使用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
函数没有user
,group
和mode
指令。
我有哪些选择?
答案 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,则文件或目录将分别保持不变。