mirror of https://github.com/ansible/ansible.git
user - consistently create user home directory on Linux (#71952)
Always use create_homedir when we are asked to create a home directory in the User class. Don't use the -m and -k parameters from useradd / luseradd as they behave differently with respect to preexisting home directories. Instead always specify -M to ensure that useradd / luseradd do not try to create the home directory. This does not change potential different behaviours in child classes of the User class. Consider the new umask option from #73821 in create_homedir as well as we do not let luseradd / useradd create the home directory any longer.pull/74628/head
parent
2e97240c67
commit
2f7e0b8489
@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- >-
|
||||
user - properly create home path on Linux when ``local: yes`` and parent directories
|
||||
specified in ``home`` do not exist (https://github.com/ansible/ansible/pull/71952/)
|
@ -0,0 +1,56 @@
|
||||
---
|
||||
# Create a new local user account with a path that has parent directories that do not exist
|
||||
- name: Create local user with home path that has parents that do not exist
|
||||
user:
|
||||
name: ansibulluser2
|
||||
state: present
|
||||
local: yes
|
||||
home: "{{ user_home_prefix[ansible_facts.system] }}/in2deep/ansibulluser2"
|
||||
register: create_home_local_with_no_parent_1
|
||||
tags:
|
||||
- user_test_local_mode
|
||||
|
||||
- name: Create local user with home path that has parents that do not exist again
|
||||
user:
|
||||
name: ansibulluser2
|
||||
state: present
|
||||
local: yes
|
||||
home: "{{ user_home_prefix[ansible_facts.system] }}/in2deep/ansibulluser2"
|
||||
register: create_home_local_with_no_parent_2
|
||||
tags:
|
||||
- user_test_local_mode
|
||||
|
||||
- name: Check the created home directory
|
||||
stat:
|
||||
path: "{{ user_home_prefix[ansible_facts.system] }}/in2deep/ansibulluser2"
|
||||
register: home_local_with_no_parent_3
|
||||
tags:
|
||||
- user_test_local_mode
|
||||
|
||||
- name: Ensure user with non-existing parent paths was created successfully
|
||||
assert:
|
||||
that:
|
||||
- create_home_local_with_no_parent_1 is changed
|
||||
- create_home_local_with_no_parent_1.home == user_home_prefix[ansible_facts.system] ~ '/in2deep/ansibulluser2'
|
||||
- create_home_local_with_no_parent_2 is not changed
|
||||
- home_local_with_no_parent_3.stat.uid == create_home_local_with_no_parent_1.uid
|
||||
- home_local_with_no_parent_3.stat.gr_name == default_local_user_group[ansible_facts.distribution] | default('ansibulluser2')
|
||||
tags:
|
||||
- user_test_local_mode
|
||||
|
||||
- name: Cleanup test account
|
||||
user:
|
||||
name: ansibulluser2
|
||||
home: "{{ user_home_prefix[ansible_facts.system] }}/in2deep/ansibulluser2"
|
||||
state: absent
|
||||
local: yes
|
||||
remove: yes
|
||||
tags:
|
||||
- user_test_local_mode
|
||||
|
||||
- name: Remove testing dir
|
||||
file:
|
||||
path: "{{ user_home_prefix[ansible_facts.system] }}/in2deep/"
|
||||
state: absent
|
||||
tags:
|
||||
- user_test_local_mode
|
Loading…
Reference in New Issue