Access-Control-List

SaltStack:更改 /home/*/input/ 的 linux ACL

  • October 19, 2017

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 個使用者做到這一點呢?

換句話說:有沒有辦法在這裡做 globbing?

如果您有一個已知的使用者列表,您可能需要使用循環:

{% 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 %}

引用自:https://serverfault.com/questions/879066