Назад | Перейти на главную страницу

SaltStack: изменение ACL Linux для / home / * / input /

На миньоне 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 %}