使用SaltStack状态,我试图以递归方式设置文件和目录的权限,
我的文件结构如下:
在以下状态下,几乎所有(排除除外)都可以正确执行,但每次执行时出现相同的重叠,因为设置了 / dir1 0644和 / dir1 / dir3 再次设置0755。
config_dirs:
file.directory:
- user: user1
- group: user1
- dir_mode: '0755'
- exclude_pat: file*_untouch
- recurse:
- user
- group
- mode
- names:
- /dir1:
- file_mode: '0644'
- /dir1/dir3:
- file_mode: '0755'
我想要这个结果:
答案 0 :(得分:0)
exclude_pat
的{{1}}选项仅适用于clean
功能。
实际上,file.directory
状态模块仅将file.directory
用作辅助工作和isn't very good at it。
要以有状态的方式实现所需的chmod/chown
动作,您可以解决chmod/chown
的限制,如下所示:
file.directory
如果这太“ hacky”,则应考虑为其编写一个简单的自定义模块。
config_dirs_dir_ownerships:
cmd.run:
- name: "find /dir1 -type d -exec chmod 755 {} \\; -exec chown user1:user1 {} \\;"
- onlyif: "find /dir1 -type d -not \\( -perm 755 -a -user user1 -a group user1 \\) |grep ."
config_dirs_file_ownerships:
cmd.run:
- name: "find /dir1 -type f -not -name 'file*_untouch' -exec chmod 644 {} \\; -exec chown user1:user1 {} \\;"
- onlyif: "find /dir1 -type f -not -name 'file*_untouch' -not \\( -perm 644 -a -user user1 -group user1 \\) |grep ."
应该可以胜任,而且实施起来并不难。自定义模块的下一个最佳文档:https://pyholodeck.readthedocs.io/en/latest/first_module.html