From 591815e1b1cc6a1ffb748774db841913e9331fdf Mon Sep 17 00:00:00 2001 From: jkhall81 Date: Wed, 3 Dec 2025 06:26:15 -0700 Subject: [PATCH] user: Guard Linux-only -K options on FreeBSD (fixes #86252) --- .../fragments/freebsd-user-ignore-uidmin.yml | 3 +++ lib/ansible/modules/user.py | 20 ++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) create mode 100644 changelogs/fragments/freebsd-user-ignore-uidmin.yml diff --git a/changelogs/fragments/freebsd-user-ignore-uidmin.yml b/changelogs/fragments/freebsd-user-ignore-uidmin.yml new file mode 100644 index 00000000000..b0bb60806cb --- /dev/null +++ b/changelogs/fragments/freebsd-user-ignore-uidmin.yml @@ -0,0 +1,3 @@ +bugfixes: + - "user module: FreeBSD backend now correctly ignores uid_min, uid_max, and umask, + instead of passing unsupported '-K' options to pw(8). (fixes #86252)" diff --git a/lib/ansible/modules/user.py b/lib/ansible/modules/user.py index b81258153fd..bc0dd6076f8 100644 --- a/lib/ansible/modules/user.py +++ b/lib/ansible/modules/user.py @@ -1507,9 +1507,10 @@ class FreeBsdUser(User): cmd.append('-k') cmd.append(self.skeleton) - if self.umask is not None: - cmd.append('-K') - cmd.append('UMASK=' + self.umask) + if self.module.get_bin_path('useradd', required=False): + if self.umask is not None: + cmd.append('-K') + cmd.append('UMASK=' + self.umask) if self.shell is not None: cmd.append('-s') @@ -1526,13 +1527,14 @@ class FreeBsdUser(User): else: cmd.append(str(calendar.timegm(self.expires))) - if self.uid_min is not None: - cmd.append('-K') - cmd.append('UID_MIN=' + str(self.uid_min)) + if self.module.get_bin_path('useradd', required=False): + if self.uid_min is not None: + cmd.append('-K') + cmd.append('UID_MIN=' + str(self.uid_min)) - if self.uid_max is not None: - cmd.append('-K') - cmd.append('UID_MAX=' + str(self.uid_max)) + if self.uid_max is not None: + cmd.append('-K') + cmd.append('UID_MAX=' + str(self.uid_max)) # system cannot be handled currently - should we error if its requested? # create the user