summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Hoang <enzime@users.noreply.github.com>2024-10-22 09:29:56 +1100
committerMichael Hoang <enzime@users.noreply.github.com>2024-10-22 16:02:21 +1100
commit26f7e45fb117171c9e8b27a34cfccb91ef50f068 (patch)
treeaffc6947216b5b909fadae31b6c18079b349a0ee
parentcb2e5fa6c5d99c581f9669e66e61ac1585ab56ad (diff)
users: use `lib.escapeShellArgs` for `sysadminctl -addUser`
-rw-r--r--modules/users/default.nix7
-rw-r--r--tests/users-groups.nix8
2 files changed, 5 insertions, 10 deletions
diff --git a/modules/users/default.nix b/modules/users/default.nix
index 83a6084..f43b139 100644
--- a/modules/users/default.nix
+++ b/modules/users/default.nix
@@ -162,12 +162,7 @@ in
else
if [ -z "$u" ]; then
echo "creating user ${v.name}..." >&2
- sysadminctl -addUser '${v.name}' \
- -UID ${toString v.uid} \
- -GID ${toString v.gid} \
- -fullName '${v.description}' \
- -home '${v.home}' \
- -shell ${lib.escapeShellArg (shellPath v.shell)}
+ sysadminctl -addUser ${lib.escapeShellArgs [ v.name "-UID" v.uid "-GID" v.gid "-fullName" v.description "-home" v.home "-shell" (shellPath v.shell) ]}
dscl . -create '/Users/${v.name}' IsHidden ${if v.isHidden then "1" else "0"}
${optionalString v.createHome "createhomedir -cu '${v.name}'"}
fi
diff --git a/tests/users-groups.nix b/tests/users-groups.nix
index a4aaf2a..bdbabe1 100644
--- a/tests/users-groups.nix
+++ b/tests/users-groups.nix
@@ -43,9 +43,9 @@
grep -qv "dscl . -delete '/Groups/unknown.group'" ${config.out}/activate
# checking user creation in /activate
- grep -zoP "sysadminctl -addUser 'foo' (.|\n)* -UID 42000 (.|\n)* -GID 42000 (.|\n)* -fullName 'Foo user' (.|\n)* -home '/Users/foo' (.|\n)* -shell ${lib.escapeShellArg "/run/current-system/sw/bin/bash"}" ${config.out}/activate
+ grep "sysadminctl -addUser ${lib.escapeShellArgs [ "foo" "-UID" 42000 "-GID" 42000 "-fullName" "Foo user" "-home" "/Users/foo" "-shell" "/run/current-system/sw/bin/bash" ]}" ${config.out}/activate
grep "createhomedir -cu 'foo'" ${config.out}/activate
- grep -zoP "sysadminctl -addUser 'created.user' (.|\n)* -UID 42001 (.|\n)* -shell ${lib.escapeShellArg "/sbin/nologin"}" ${config.out}/activate
+ grep "sysadminctl -addUser ${lib.escapeShellArgs [ "created.user" "-UID" 42001 ]} .* ${lib.escapeShellArgs [ "-shell" "/sbin/nologin" ]}" ${config.out}/activate
grep -qv "sysadminctl -deleteUser ${lib.escapeShellArg "created.user"}" ${config.out}/activate
grep -qv "sysadminctl -deleteUser ${lib.escapeShellArg "created.user"}" ${config.out}/activate
@@ -54,10 +54,10 @@
# checking user deletion in /activate
grep "sysadminctl -deleteUser ${lib.escapeShellArg "deleted.user"}" ${config.out}/activate
- grep -qv "sysadminctl -addUser 'deleted.user'" ${config.out}/activate
+ grep -qv "sysadminctl -addUser ${lib.escapeShellArg "deleted.user"}" ${config.out}/activate
# checking unknown user in /activate
- grep -qv "sysadminctl -addUser 'unknown.user'" ${config.out}/activate
+ grep -qv "sysadminctl -addUser ${lib.escapeShellArg "unknown.user"}" ${config.out}/activate
grep -qv "sysadminctl -deleteUser ${lib.escapeShellArg "unknown.user"}" ${config.out}/activate
set +v