แก้ไข: อัปเดต 9 มกราคม 2014 สำหรับ OS X Mavericks (คำแนะนำจากเดฟขอบคุณ!)
ฉันเขียนสคริปต์ทุบตีเพื่อทำสิ่งนี้ มันจะใช้ uid ที่ไม่ได้ใช้ครั้งแรกซึ่งน้อยกว่าหรือเท่ากับ 500 (u ดีบัญชี daemon บน Mac OS X) ที่มี gid ที่ไม่ได้ใช้เหมือนกัน
บันทึกสคริปต์เพื่อไฟล์ชื่อและตั้งปฏิบัติการด้วยadd_system_user.sh
chmod 755 add_system_user.sh
แล้วสมมติว่าคุณต้องการที่จะเพิ่มผู้ใช้ภูต / ระบบที่เรียกว่าหุ้นที่ตราไว้ คุณจะเรียกใช้สคริปต์นี้เช่น:
sudo add_system_user.sh par
และคุณจะได้รับชื่อผู้ใช้ระบบ_par
ซึ่งเป็นpar
ชื่อแทน (ชื่อที่คุณร้องขอ) และมี uid และ gid ที่ตรงกัน (เช่น 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"