File: _user_accounts.yml

package info (click to toggle)
python-mitogen 0.3.36-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 6,708 kB
  • sloc: python: 24,457; sh: 198; makefile: 74; perl: 19; ansic: 18
file content (186 lines) | stat: -rw-r--r-- 5,910 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
#
# Add users expected by tests. Assumes passwordless sudo to root.
#
# WARNING: this creates non-privilged accounts with pre-set passwords!
#
- name: Mitogen test users and groups
  hosts: all
  gather_facts: true
  strategy: mitogen_free
  become: true
  vars:
    distro: "{{ansible_distribution}}"
    special_users:
      - name: mitogen__has_sudo
      - name: mitogen__has_sudo_nopw
      - name: mitogen__has_sudo_pubkey
      - name: mitogen__pw_required
      - name: mitogen__readonly_homedir
      - name: mitogen__require_tty
      - name: mitogen__require_tty_pw_required
      - name: mitogen__permdenied
      - name: mitogen__slow_user
      - name: mitogen__webapp
      - name: mitogen__sudo1
      - name: mitogen__sudo2
      - name: mitogen__sudo3
      - name: mitogen__sudo4

    user_groups:
      mitogen__has_sudo: ['mitogen__group', '{{ sudo_group[distro] }}']
      mitogen__has_sudo_pubkey: ['mitogen__group', '{{ sudo_group[distro] }}']
      mitogen__has_sudo_nopw: ['mitogen__group', 'mitogen__sudo_nopw']
      mitogen__sudo1: ['mitogen__group', 'mitogen__sudo_nopw']
      mitogen__sudo2: ['mitogen__group', '{{ sudo_group[distro] }}']
      mitogen__sudo3: ['mitogen__group', '{{ sudo_group[distro] }}']
      mitogen__sudo4: ['mitogen__group', '{{ sudo_group[distro] }}']

    normal_users:
      - name: mitogen__user1
      - name: mitogen__user2
      - name: mitogen__user3
      - name: mitogen__user4
      - name: mitogen__user5

    all_users: "{{
      special_users +
      normal_users
      }}"

    mitogen_test_groups:
      - name: mitogen__group
      - name: mitogen__sudo_nopw

    user_policies_max_failed_logins: 1000
    user_policies_users: "{{ all_users }}"
  pre_tasks:
    - name: Disable non-localhost SSH for Mitogen users
      when: false
      blockinfile:
        path: /etc/ssh/sshd_config
        block: |
          Match User mitogen__* Address !127.0.0.1
            DenyUsers *

    - name: Create Mitogen test groups
      group:
        name: "{{ item.name }}"
      with_items: "{{ mitogen_test_groups }}"

    - name: Create user accounts
      vars:
        password: "{{ item.name | replace('mitogen__', '') }}_password"
      block:
      - user:
          name: "{{ item.name }}"
          shell: /bin/bash
          groups: "{{ user_groups[item.name] | default(['mitogen__group']) }}"
          password: "{{ password | password_hash('sha256') }}"
        with_items: "{{all_users}}"
        when: ansible_system != 'Darwin'
      - user:
          name: "{{ item.name }}"
          shell: /bin/bash
          group: staff
          groups: |
            {{
                ['com.apple.access_ssh'] +
                (user_groups[item.name] | default(['mitogen__group']))
            }}
          hidden: true
          password: "{{ password }}"
        with_items: "{{all_users}}"
        when: ansible_system == 'Darwin'

    - name: Check if AccountsService is used
      stat:
        path: /var/lib/AccountsService/users
      register: out

    - name: Hide users from login window (Linux).
      when: ansible_system == 'Linux' and out.stat.exists
      with_items: "{{all_users}}"
      copy:
        dest: /var/lib/AccountsService/users/{{ item.name }}
        mode: u=rw,go=
        content: |
          [User]
          SystemAccount=true

    - name: Restart AccountsService (Linux).
      when: ansible_system == 'Linux' and out.stat.exists
      service:
        name: accounts-daemon
        state: restarted

    - name: Readonly homedir for one account
      file:
        path: ~mitogen__readonly_homedir
        owner: root
        recurse: true
        state: directory

    - name: Slow bash profile for one account
      copy:
        dest: ~mitogen__slow_user/.{{item}}
        src: ../data/docker/mitogen__slow_user.profile
        owner: mitogen__slow_user
        group: mitogen__group
        mode: u=rw,go=r
      with_items:
      - bashrc
      - profile

    - name: "Login throws permission denied errors (issue #271)"
      copy:
        dest: ~mitogen__permdenied/.{{item}}
        src: ../data/docker/mitogen__permdenied.profile
        owner: mitogen__permdenied
        group: mitogen__group
        mode: u=rw,go=r
      with_items:
      - bashrc
      - profile

    - name: Install pubkey for mitogen__has_sudo_pubkey
      block:
        - file:
            path: ~mitogen__has_sudo_pubkey/.ssh
            state: directory
            mode: go=
            owner: mitogen__has_sudo_pubkey
            group: mitogen__group
        - copy:
            dest: ~mitogen__has_sudo_pubkey/.ssh/authorized_keys
            src: ../data/docker/mitogen__has_sudo_pubkey.key.pub
            mode: go=
            owner: mitogen__has_sudo_pubkey
            group: mitogen__group

    - name: Configure sudoers
      copy:
        src: "{{ item.src }}"
        dest: "{{ item.dest }}"
        mode: ug=r,o=
        validate: '/usr/sbin/visudo -cf %s'
      with_items:
        - {src: sudoers_defaults, dest: /etc/sudoers.d/mitogen_test_defaults}

    - name: Configure sudoers users
      blockinfile:
        path: /etc/sudoers
        marker: "# {mark} Mitogen test users"
        block: |
          # User    Host(s) = (runas user:runas group) Command(s)
          {{ lookup('pipe', 'whoami') }} ALL = (mitogen__pw_required:ALL) ALL
          {{ lookup('pipe', 'whoami') }} ALL = (mitogen__require_tty_pw_required:ALL) ALL
          {{ lookup('pipe', 'whoami') }} ALL = (mitogen__require_tty:ALL) NOPASSWD:ALL
          {{ lookup('pipe', 'whoami') }} ALL = (mitogen__readonly_homedir:ALL) NOPASSWD:ALL
          {% for runas_user in normal_users %}
          {{ lookup('pipe', 'whoami') }} ALL = ({{ runas_user.name }}:ALL) NOPASSWD:ALL
          {% endfor %}
        validate: '/usr/sbin/visudo -cf %s'
      when:
        - ansible_connection == "local"
  roles:
    - role: user_policies