SaltStack minion 上大约有 30 个用户和 30 个目录具有以下结构:
/home/user1/input/
/home/user2/input/
/home/user3/input/
/home/user4/input/
...
我知道如何通过 salt 更改单个文件的 Linux ACL。在此示例中,用户“foo”获得读取访问权限:
home_user1_input_readable:
acl.present:
- name: /home/user1/input
- acl_type: user
- acl_name: foo
- perms: r
来源:https://docs.saltstack.com/en/latest/ref/states/all/salt.states.linux_acl.html
但是我该如何为 N 个用户做到这一点呢?
换句话说:这里有办法进行通配吗?
答案1
如果您有已知用户列表,您可能需要使用循环:
{% for user in users %}
home_{{ user }}_input_readable:
acl.present:
- name: /home/{{ user }}/input
- acl_type: user
- acl_name: foo
- perms: r
{% endfor %}
如果你没有,你可以从小兵那里获得:
{% set users = salt['user.list_users']() %}
然后循环查找所有拥有input
类似目录的用户:
{% for user in users %}
{% set userdef = salt['user.info'](user) %}
{% if salt['file.directory_exists'](userdef.home + '/input') %}
home_{{ user }}_input_readable:
acl.present:
- name: /home/{{ user }}/input
- acl_type: user
- acl_name: foo
- perms: r
{% endif %}
{% endfor %}