2017-02-28 175 views
1

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

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

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

但我应该怎么用的文件?

我可以使用:

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

和它的作品,但我有一个警告消息:

[警告]国家文件:/boot/grub/grub.cfg - 既不是“源'也没有定义 'contents','contents_pillar'和'contents_grains', 还有'replace'被设置为'True'。由于没有来源替换 文件,因此'replace'已被设置为'False',以免不必要地读取文件 。

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

file.exists函数没有user,groupmode指令。

我有什么选择?

+0

你可以发布file.managed状态的代码片段吗?您发布的内容不包含文件名,因此不完整。我希望我能帮助你。 –

+0

当然,这是一个代码段: /etc/cron.d中: file.directory: - 用户:根 - 模式:400 /boot/grub/grub.cfg: file.managed: - 用户:root - group:root - mode:400 – Oskar

+0

对不起,以上的文本格式。代码工作正常,我只关心输出中的警告。也许我为我的任务使用了错误的功能? – Oskar

回答

4

你得到警告消息几乎说明了一切。如果指定replace: False消息将会消失:

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

cmd.run显然会删除此消息,但它太普通,更喜欢这里的一种解决方法。更多咸味方法将使用file.managed状态,因为这是它的设计目的。

+0

它的工作原理!谢谢! – Oskar

1

如果文件不是由盐管理,你可能要改用cmd.run和直接调用Unix命令:

chown root:root /path/to/file: 
    cmd.run 

chmod 444 /path/to/file: 
    cmd.run 
+0

看起来这对我来说是最好的选择。谢谢! – Oskar

+1

这不是全状态,每次都会运行。 – Pieter