|
- {%- from "linux/map.jinja" import system with context %}
- {%- if system.enabled %}
-
- include:
- - linux.system.group
-
- {%- for name, user in system.user.items() %}
-
- {%- if user.enabled %}
-
- {%- set requires = [] %}
- {%- for group in user.get('groups', []) %}
- {%- if group in system.get('group', {}).keys() %}
- {%- do requires.append({'group': 'system_group_'+group}) %}
- {%- endif %}
- {%- endfor %}
-
- {%- if user.gid is not defined %}
- system_group_{{ name }}:
- group.present:
- - name: {{ name }}
- - require_in:
- - user: system_user_{{ name }}
- {%- endif %}
-
- {%- if user.get('makedirs') %}
- system_user_home_parentdir_{{ user.home }}:
- file.directory:
- - name: {{ user.home | path_join("..") }}
- - makedirs: true
- - require_in:
- - user: system_user_{{ name }}
- {%- endif %}
-
- system_user_{{ name }}:
- user.present:
- - name: {{ name }}
- - home: {{ user.home }}
- {% if user.get('password') == False %}
- - enforce_password: false
- {% elif user.get('password') == None %}
- - enforce_password: true
- - password: '*'
- {% elif user.get('password') %}
- - enforce_password: true
- - password: {{ user.password }}
- - hash_password: {{ user.get('hash_password', False) }}
- {% endif %}
- {%- if user.gid is defined and user.gid %}
- - gid: {{ user.gid }}
- {%- else %}
- - gid: {{ name }}
- {%- endif %}
- {%- if user.groups is defined %}
- - groups: {{ user.groups }}
- {%- endif %}
- {%- if user.system is defined and user.system %}
- - system: True
- - shell: {{ user.get('shell', '/bin/false') }}
- {%- else %}
- - shell: {{ user.get('shell', '/bin/bash') }}
- {%- endif %}
- {%- if user.uid is defined and user.uid %}
- - uid: {{ user.uid }}
- {%- endif %}
- {%- if user.unique is defined %}
- - unique: {{ user.unique }}
- {%- endif %}
- {%- if user.maxdays is defined %}
- - maxdays: {{ user.maxdays }}
- {%- endif %}
- {%- if user.mindays is defined %}
- - mindays: {{ user.mindays }}
- {%- endif %}
- {%- if user.warndays is defined %}
- - warndays: {{ user.warndays }}
- {%- endif %}
- {%- if user.inactdays is defined %}
- - inactdays: {{ user.inactdays }}
- {%- endif %}
- - require: {{ requires|yaml }}
- {%- if user.allow_uid_change is defined and user.allow_uid_change %}
- - allow_uid_change: true
- {%- endif %}
-
- system_user_home_{{ user.home }}:
- file.directory:
- - name: {{ user.home }}
- - user: {{ name }}
- - mode: {{ user.get('home_dir_mode', 700) }}
- - makedirs: true
- - require:
- - user: system_user_{{ name }}
-
- {%- if user.get('sudo', False) %}
-
- /etc/sudoers.d/90-salt-user-{{ name|replace('.', '-') }}:
- file.managed:
- - source: salt://linux/files/sudoer
- - template: jinja
- - user: root
- - group: root
- - mode: 440
- - defaults:
- user_name: {{ name }}
- - require:
- - user: system_user_{{ name }}
- - check_cmd: /usr/sbin/visudo -c -f
-
- {%- else %}
-
- /etc/sudoers.d/90-salt-user-{{ name|replace('.', '-') }}:
- file.absent
-
- {%- endif %}
-
- {%- else %}
-
- system_user_{{ name }}:
- user.absent:
- - name: {{ name }}
-
- system_user_home_{{ user.home }}:
- file.absent:
- - name: {{ user.home }}
-
- /etc/sudoers.d/90-salt-user-{{ name|replace('.', '-') }}:
- file.absent
-
- {%- endif %}
-
- {%- endfor %}
-
- {%- endif %}
|