我需要使用SaltStack更改Linux中的文件权限。
对于目录,我可以使用file.directory
函数,例如:
file.directory:
- user: root
- group: root
- mode: 400
但是我应该用什么来做文件呢?
我可以使用:
file.managed:
- user: root
- group: root
- mode: 444
而且它起作用了,但我有一个警告信息:
[警告]文件的状态:/boot/grub/grub.cfg-"source"、"contents"、"contents_pillar"和"contents_grain"均未定义,但"replace"已设置为"True"。由于没有可用于替换文件的源,因此"replace"已设置为"False",以避免不必要地读取文件。
它需要一个source
指令,但我不想将文件下载到minion,我只需要更改文件权限。file.exists
函数没有user
、group
和mode
指令。
我有什么选择?
3条答案
按热度按时间6uxekuva1#
你得到的警告消息几乎说明了一切。如果你指定
replace: False
,消息将消失:使用
cmd.run
显然可以删除此消息,但它太通用了,更像是一种变通方法。更“咸”的方法是使用file.managed
状态,因为这是它的设计目的。pwuypxnk2#
状态file.directory只在一个状态中递归地设置文件和/或目录的权限。比cmd.run即使什么都不更改也要执行的www.example.com好(这将与“状态”的原理背道而驰)。请注意,file.managed在此上下文中是不够的。
如果recurse选项下包含ignore_files或ignore_dirs,则文件或目录将分别保持不变。
omjgkv6w3#
如果该文件不是由salt管理的,您可能希望使用cmd.run并直接调用unix命令: