2017-02-28 178 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