From 7c31e6b1c0276d240d8e8ab2addbce41f47e56e1 Mon Sep 17 00:00:00 2001 From: Matt Martz Date: Mon, 27 Nov 2023 08:55:17 -0600 Subject: [PATCH] [stable-2.15] Check if skeleton is /dev/null while creating home folder (#75948) (#82103) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Check if skeleton is /dev/null while creating home folder * Add test for linux (cherry picked from commit 25b3d3a) Co-authored-by: Holger Dörner <42909210+HolgerDoerner@users.noreply.github.com> --- ...low-dev-nul-as-skeleton-for-new-homedir.yml | 3 +++ lib/ansible/modules/user.py | 2 +- .../user/tasks/test_create_user_home.yml | 18 ++++++++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 changelogs/fragments/75063-allow-dev-nul-as-skeleton-for-new-homedir.yml diff --git a/changelogs/fragments/75063-allow-dev-nul-as-skeleton-for-new-homedir.yml b/changelogs/fragments/75063-allow-dev-nul-as-skeleton-for-new-homedir.yml new file mode 100644 index 00000000000..f7e10b74536 --- /dev/null +++ b/changelogs/fragments/75063-allow-dev-nul-as-skeleton-for-new-homedir.yml @@ -0,0 +1,3 @@ +bugfixes: + - modules/user.py - Add check for valid directory when creating new user homedir (allows /dev/null as skeleton) (https://github.com/ansible/ansible/issues/75063) + diff --git a/lib/ansible/modules/user.py b/lib/ansible/modules/user.py index 0c26cc28bdf..a888fea8919 100644 --- a/lib/ansible/modules/user.py +++ b/lib/ansible/modules/user.py @@ -1273,7 +1273,7 @@ class User(object): else: skeleton = '/etc/skel' - if os.path.exists(skeleton): + if os.path.exists(skeleton) and skeleton != os.devnull: try: shutil.copytree(skeleton, path, symlinks=True) except OSError as e: diff --git a/test/integration/targets/user/tasks/test_create_user_home.yml b/test/integration/targets/user/tasks/test_create_user_home.yml index 1b529f76be3..5561a2f5249 100644 --- a/test/integration/targets/user/tasks/test_create_user_home.yml +++ b/test/integration/targets/user/tasks/test_create_user_home.yml @@ -134,3 +134,21 @@ name: randomuser state: absent remove: yes + +- name: Create user home directory with /dev/null as skeleton, https://github.com/ansible/ansible/issues/75063 + # create_homedir is mostly used by linux, rest of OSs take care of it themselves via -k option (which fails this task) + when: ansible_system == 'Linux' + block: + - name: "Create user home directory with /dev/null as skeleton" + user: + name: withskeleton + state: present + skeleton: "/dev/null" + createhome: yes + register: create_user_with_skeleton_dev_null + always: + - name: "Remove test user" + user: + name: withskeleton + state: absent + remove: yes