संपादित करें: अपडेट किया गया जनवरी 9, 2014 ओएस एक्स मावेरिक्स के लिए (डेव से सुझाव है, धन्यवाद!)
मैंने ऐसा करने के लिए एक बैश स्क्रिप्ट लिखी। यह पहले अप्रयुक्त यूआईडी का उपयोग करेगा जो 500 से कम या इसके बराबर है (मैक ओएस एक्स पर डेमॉन अकाउंट यूड्स) जिसमें एक समान अप्रयुक्त जीआईडी भी है।
स्क्रिप्ट को नामांकित फ़ाइल में सहेजें add_system_user.sh
और इसके साथ निष्पादन योग्य सेट करें chmod 755 add_system_user.sh
।
तो फिर चलिए कहते हैं कि आप एक डेमॉन / सिस्टम यूजर जोड़ना चाहते हैं जिसे par कहा जाता है । आप इस स्क्रिप्ट को ऐसे ही चलाएंगे:
sudo add_system_user.sh par
और आपको एक सिस्टम उपयोगकर्ता मिलेगा, जिसे _par
अलियास किया जाता है par
(आपके द्वारा अनुरोधित नाम) और इसमें एक मिलान यूआईडी और जीआईडी (जैसे 499 या जो भी मिला)।
यहाँ स्क्रिप्ट है:
#!/bin/bash
if (( $(id -u) )) ; then
echo "This script needs to run as root"
exit 1
fi
if [[ -z "$1" ]] ; then
echo "Usage: $(basename $0) [username] [realname (optional)]"
exit 1
fi
username=$1
realname="${2:-$username}"
echo "Adding daemon user $username with real name \"$realname\""
for (( uid = 500;; --uid )) ; do
if ! id -u $uid &>/dev/null; then
if ! dscl /Local/Default -ls Groups gid | grep -q [^0-9]$uid\$ ; then
dscl /Local/Default -create Groups/_$username
dscl /Local/Default -create Groups/_$username Password \*
dscl /Local/Default -create Groups/_$username PrimaryGroupID $uid
dscl /Local/Default -create Groups/_$username RealName "$realname"
dscl /Local/Default -create Groups/_$username RecordName _$username $username
dscl /Local/Default -create Users/_$username
dscl /Local/Default -create Users/_$username NFSHomeDirectory /var/empty
dscl /Local/Default -create Users/_$username Password \*
dscl /Local/Default -create Users/_$username PrimaryGroupID $uid
dscl /Local/Default -create Users/_$username RealName "$realname"
dscl /Local/Default -create Users/_$username RecordName _$username $username
dscl /Local/Default -create Users/_$username UniqueID $uid
dscl /Local/Default -create Users/_$username UserShell /usr/bin/false
dscl /Local/Default -delete /Users/_$username AuthenticationAuthority
dscl /Local/Default -delete /Users/_$username PasswordPolicyOptions
break
fi
fi
done
echo -e "Created system user $username (uid/gid $uid):\n"
dscl /Local/Default -read Users/_$username
echo -e "\nYou can undo the creation of this user by issuing the following commands:\n"
echo "sudo dscl /Local/Default -delete Users/_$username"
echo "sudo dscl /Local/Default -delete Groups/_$username"