diff options
| author | Michael Hoang <enzime@users.noreply.github.com> | 2024-10-22 09:29:56 +1100 |
|---|---|---|
| committer | Michael Hoang <enzime@users.noreply.github.com> | 2024-10-22 16:02:21 +1100 |
| commit | 26f7e45fb117171c9e8b27a34cfccb91ef50f068 (patch) | |
| tree | affc6947216b5b909fadae31b6c18079b349a0ee | |
| parent | cb2e5fa6c5d99c581f9669e66e61ac1585ab56ad (diff) | |
users: use `lib.escapeShellArgs` for `sysadminctl -addUser`
| -rw-r--r-- | modules/users/default.nix | 7 | ||||
| -rw-r--r-- | tests/users-groups.nix | 8 |
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 |
