Skip to content

Commit d80338d

Browse files
Merge pull request #142 from IMBArator/policykit-settings
make AdminIdentity configureable per user
2 parents d4f8cf9 + 18c5d9e commit d80338d

4 files changed

Lines changed: 47 additions & 3 deletions

File tree

pillar.example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ users:
5555
- ALL=(otheruser) /usr/bin/script.sh
5656
sudo_defaults:
5757
- '!requiretty'
58+
# enable polkitadmin to make user an AdminIdentity for polkit
59+
polkitadmin: True
5860
shell: /bin/bash
5961
remove_groups: False
6062
prime_group:

users/init.sls

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
{% set used_sudo = [] %}
44
{% set used_googleauth = [] %}
55
{% set used_user_files = [] %}
6+
{% set used_polkit = [] %}
67
78
{% for group, setting in salt['pillar.get']('groups', {}).items() %}
89
{% if setting.absent is defined and setting.absent or setting.get('state', "present") == 'absent' %}
@@ -38,9 +39,12 @@ users_group_present_{{ group }}:
3839
{%- if salt['pillar.get']('users:' ~ name ~ ':user_files:enabled', False) %}
3940
{%- do used_user_files.append(1) %}
4041
{%- endif %}
42+
{%- if user.get('polkitadmin', False) == True %}
43+
{%- do used_polkit.append(1) %}
44+
{%- endif %}
4145
{%- endfor %}
4246
43-
{%- if used_sudo or used_googleauth or used_user_files %}
47+
{%- if used_sudo or used_googleauth or used_user_files or used_polkit %}
4448
include:
4549
{%- if used_sudo %}
4650
- users.sudo
@@ -51,6 +55,9 @@ include:
5155
{%- if used_user_files %}
5256
- users.user_files
5357
{%- endif %}
58+
{%- if used_polkit %}
59+
- users.polkit
60+
{%- endif %}
5461
{%- endif %}
5562
5663
{% for name, user in pillar.get('users', {}).items()

users/map.jinja

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@
2727
'bash_package': 'bash',
2828
'sudo_package': 'sudo',
2929
'googleauth_package': 'libpam-google-authenticator',
30-
},
30+
'polkit_dir': '/etc/polkit-1/localauthority.conf.d',
31+
'polkit_defaults': 'unix-group:sudo;'
32+
},
3133
'Gentoo': {
3234
'sudoers_dir': '/etc/sudoers.d',
3335
'sudoers_file': '/etc/sudoers',
@@ -82,6 +84,8 @@
8284
'bash_package': 'bash',
8385
'sudo_package': 'sudo',
8486
'googleauth_package': 'libpam-google-authenticator',
87+
'polkit_dir': '/etc/polkit-1/localauthority.conf.d',
88+
'polkit_defaults': 'unix-group:sudo;'
8589
},
8690
}, merge=salt['pillar.get']('users-formula:lookup')),
8791
base='users',
@@ -90,4 +94,4 @@
9094
{% if grains.os == 'MacOS' %}
9195
{% set group = salt['cmd.run']("stat -f '%Sg' /dev/console") %}
9296
{% do users.update({'root_group': group,}) %}
93-
{% endif %}
97+
{% endif %}

users/polkit.sls

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
{% from "users/map.jinja" import users with context %}
2+
{% set polkitusers = {} %}
3+
{% set polkitusers = {'value': ''} %}
4+
5+
{% for name, user in pillar.get('users', {}).items() %}
6+
{% if user.absent is not defined or not user.absent %}
7+
{% if 'polkitadmin' in user and user['polkitadmin'] %}
8+
{% do polkitusers.update({'value': polkitusers.value + 'unix-user:' + name + ';'}) %}
9+
{% endif %}
10+
{% endif %}
11+
{% endfor %}
12+
13+
{% if polkitusers.value != '' %}
14+
users_{{ users.polkit_dir }}/99salt-users-formula.conf:
15+
file.managed:
16+
- replace: True
17+
- onlyif: 'test -d {{ users.polkit_dir }}'
18+
- name: {{ users.polkit_dir }}/99salt-users-formula.conf
19+
- contents: |
20+
########################################################################
21+
# File managed by Salt (users-formula).
22+
# Your changes will be overwritten.
23+
########################################################################
24+
#
25+
[Configuration]
26+
AdminIdentities={{ users.polkit_defaults }}{{ polkitusers.value }}
27+
{% else %}
28+
users_{{ users.polkit_dir }}/99salt-users-formula.conf_delete:
29+
file.absent:
30+
- name: {{ users.polkit_dir }}/99salt-users-formula.conf
31+
{% endif %}

0 commit comments

Comments
 (0)