Skip to content

Commit a92f24c

Browse files
committed
Changes in user management:
- Allow to specify primary gid for user - Use user.name field for setting linux username - Allow non-unique uids - Workaround file.directory bug for non-unique uids - Allow system users (Choose UID in the range of FIRST_SYSTEM_UID and LAST_SYSTEM_UID)
1 parent cf4825a commit a92f24c

2 files changed

Lines changed: 36 additions & 15 deletions

File tree

README.rst

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,16 @@ Linux with system users, some with password set:
6969
full_name: 'With hased password'
7070
home: '/home/elizabeth'
7171
password: "$6$nUI7QEz3$dFYjzQqK5cJ6HQ38KqG4gTWA9eJu3aKx6TRVDFh6BVJxJgFWg2akfAA7f1fCxcSUeOJ2arCO6EEI6XXnHXxG10"
72+
someserv:
73+
name: 'someservice'
74+
enabled: true
75+
full_name: 'Some super service owner'
76+
home: '/usr/lib/someservice'
77+
home_dir_mode: 700
78+
system:true
79+
unique: false
80+
uid: 0
81+
gid: 0
7282
7383
Configure sudo for users and groups under ``/etc/sudoers.d/``.
7484
This ways ``linux.system.sudo`` pillar map to actual sudo attributes:

linux/system/user.sls

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@ include:
1616
{%- endfor %}
1717
1818
{%- if user.gid is not defined %}
19-
system_group_{{ name }}:
19+
system_group_{{ user.name }}:
2020
group.present:
21-
- name: {{ name }}
21+
- name: {{ user.name }}
2222
- require_in:
23-
- user: system_user_{{ name }}
23+
- user: system_user_{{ user.name }}
2424
{%- endif %}
2525
26-
system_user_{{ name }}:
26+
system_user_{{ user.name }}:
2727
user.present:
28-
- name: {{ name }}
28+
- name: {{ user.name }}
2929
- home: {{ user.home }}
3030
{% if user.get('password') == False %}
3131
- enforce_password: false
@@ -37,7 +37,11 @@ system_user_{{ name }}:
3737
- password: {{ user.password }}
3838
- hash_password: {{ user.get('hash_password', False) }}
3939
{% endif %}
40+
{%- if user.gid is defined %}
41+
- gid: {{ user.gid }}
42+
{%- else %}
4043
- gid_from_name: true
44+
{%- endif %}
4145
{%- if user.groups is defined %}
4246
- groups: {{ user.groups }}
4347
{%- endif %}
@@ -47,53 +51,60 @@ system_user_{{ name }}:
4751
{%- else %}
4852
- shell: {{ user.get('shell', '/bin/bash') }}
4953
{%- endif %}
50-
{%- if user.uid is defined and user.uid %}
54+
{%- if user.uid is defined %}
5155
- uid: {{ user.uid }}
5256
{%- endif %}
57+
{%- if user.unique is defined %}
58+
- unique: {{ user.unique }}
59+
{%- endif %}
5360
- require: {{ requires|yaml }}
5461
5562
system_user_home_{{ user.home }}:
5663
file.directory:
5764
- name: {{ user.home }}
58-
- user: {{ name }}
65+
{%- if user.uid is defined and user.uid == 0 %}
66+
- user: root
67+
{%- else %}
68+
- user: {{ user.name }}
69+
{%- endif %}
5970
- mode: {{ user.get('home_dir_mode', 700) }}
6071
- makedirs: true
6172
- require:
62-
- user: system_user_{{ name }}
73+
- user: system_user_{{ user.name }}
6374
6475
{%- if user.get('sudo', False) %}
6576
66-
/etc/sudoers.d/90-salt-user-{{ name|replace('.', '-') }}:
77+
/etc/sudoers.d/90-salt-user-{{ user.name|replace('.', '-') }}:
6778
file.managed:
6879
- source: salt://linux/files/sudoer
6980
- template: jinja
7081
- user: root
7182
- group: root
7283
- mode: 440
7384
- defaults:
74-
user_name: {{ name }}
85+
user_name: {{ user.name }}
7586
- require:
76-
- user: system_user_{{ name }}
87+
- user: system_user_{{ user.name }}
7788
- check_cmd: /usr/sbin/visudo -c -f
7889
7990
{%- else %}
8091
81-
/etc/sudoers.d/90-salt-user-{{ name|replace('.', '-') }}:
92+
/etc/sudoers.d/90-salt-user-{{ user.name|replace('.', '-') }}:
8293
file.absent
8394
8495
{%- endif %}
8596
8697
{%- else %}
8798
88-
system_user_{{ name }}:
99+
system_user_{{ user.name }}:
89100
user.absent:
90-
- name: {{ name }}
101+
- name: {{ user.name }}
91102
92103
system_user_home_{{ user.home }}:
93104
file.absent:
94105
- name: {{ user.home }}
95106
96-
/etc/sudoers.d/90-salt-user-{{ name|replace('.', '-') }}:
107+
/etc/sudoers.d/90-salt-user-{{ user.name|replace('.', '-') }}:
97108
file.absent
98109
99110
{%- endif %}

0 commit comments

Comments
 (0)