Last active
November 1, 2022 17:52
-
-
Save Telling/fd4970dd342597976de95176ec03d4ef to your computer and use it in GitHub Desktop.
create-daemon-user
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# Make sure we are root | |
if [[ $EUID -ne 0 ]]; then | |
echo "This script must be run as root" 1>&2 | |
exit 1 | |
fi | |
if [ -z "$1" ]; then | |
echo "Provide the user name as the first argument." 1>&2 | |
exit 1 | |
fi | |
get_next_daemon_uid() { | |
all_uids=$(dscl . -list /Users UniqueID | grep -o '[0-9]\+' | sort -nr) | |
for uid in $all_uids; do | |
if (( uid < 500 )); then | |
echo "$((( uid + 1 )))" | |
exit 0 | |
fi | |
done | |
exit 1 | |
} | |
next_uid=$(get_next_daemon_uid) | |
username="$1" | |
realname="${1} daemon" | |
echo "Creating group _${username} with gid: ${next_uid}" | |
dscl . -create "/Groups/_${username}" | |
dscl . -create "/Groups/_${username}" PrimaryGroupID "$next_uid" | |
dscl . -create "/Groups/_${username}" RecordName "_${username}" "$username" | |
dscl . -create "/Groups/_${username}" RealName "$realname" | |
dscl . -create "/Groups/_${username}" Password \* | |
echo "Creating user _${username} with uid: ${next_uid}" | |
dscl . -create "/Users/_$username" | |
dscl . -create "/Users/_$username" NFSHomeDirectory /var/empty | |
dscl . -create "/Users/_$username" Password \* | |
dscl . -create "/Users/_$username" PrimaryGroupID "$next_uid" | |
dscl . -create "/Users/_$username" RealName "$realname" | |
dscl . -create "/Users/_$username" RecordName "_${username}" "$username" | |
dscl . -create "/Users/_$username" UniqueID "$next_uid" | |
dscl . -create "/Users/_$username" UserShell /usr/bin/false | |
dscl . -delete "/Users/_$username" PasswordPolicyOptions | |
dscl . -delete "/Users/_$username" AuthenticationAuthority |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment