На миньоне SaltStack примерно 30 пользователей и 30 каталогов с такой структурой:
/home/user1/input/
/home/user2/input/
/home/user3/input/
/home/user4/input/
...
Я знаю, как изменить ACL Linux для одного файла с помощью соли. В этом примере пользователь «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 пользователей?
Другими словами: есть ли здесь способ делать глобусы?
Если у вас есть список известных пользователей, вы можете использовать цикл:
{% 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 %}