คำตอบ:
นี่คือเชลล์สคริปต์ที่ฉันเขียนในที่ทำงานเพื่อจัดการสิ่งนี้เป็นส่วนหนึ่งของกระบวนการ NetInstall (การสร้างบัญชีผู้ดูแลระบบภายในโดยอัตโนมัติระหว่างกระบวนการสร้างภาพ)
#!/bin/sh
. /etc/rc.common
dscl . create /Users/administrator
dscl . create /Users/administrator RealName "Administrator Account"
dscl . create /Users/administrator hint "Password Hint"
dscl . create /Users/administrator picture "/Path/To/Picture.png"
dscl . passwd /Users/administrator thisistheaccountpassword
dscl . create /Users/administrator UniqueID 501
dscl . create /Users/administrator PrimaryGroupID 80
dscl . create /Users/administrator UserShell /bin/bash
dscl . create /Users/administrator NFSHomeDirectory /Users/administrator
cp -R /System/Library/User\ Template/English.lproj /Users/administrator
chown -R administrator:staff /Users/administrator
หมายเหตุบางประการที่จะพูดถึง:
cp -R ...
; chown -R ...
) createhomedir -u administrator
คุณสามารถใช้คำสั่ง createhomedir
มีหน้าคนด้วย
หากต้องการดำเนินการนี้โดยอัตโนมัติบรรทัดต่อไปนี้สามารถใช้เพื่อรับ ID ผู้ใช้ "ว่าง" ถัดไปหากคุณใช้งานบน mac ที่มีผู้ใช้ตั้งค่าไว้แล้ว
LastID=`dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1`
NextID=$((LastID + 1))
จากนั้นบรรทัดที่สอดคล้องกันในคำตอบของ bispymusic ข้างต้นสามารถเปลี่ยนแปลงได้:
dscl . create /Users/administrator UniqueID $NextID
ฉันมีการอัปเดตเกี่ยวกับคำตอบข้างต้น
dscl / -append /Groups/admin GroupMembership newUserName
คำสั่งนี้สามารถใช้สำหรับทำให้ผู้ใช้มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบ หากไม่ได้ระบุคำสั่งนี้ผู้ใช้จะถูกตั้งเป็นผู้ใช้มาตรฐานโดยอัตโนมัติ
dscl . create /Users/newUserName PrimaryGroupID 80
ชุดนี้ ID กลุ่มหลักของผู้ใช้ 80 วิธีการดูแลระบบ และ 20 หมายถึงพนักงาน และการตั้งค่าเป็น 20 จะไม่ทำให้ผู้ใช้มาตรฐาน ยกเว้นว่าไม่มีการกล่าวถึงคำสั่งแรก
นี่คือเชลล์สคริปต์ที่ฉันเขียนเพื่อเพิ่มผู้ใช้ใหม่ใน Max OS X โดยใช้บรรทัดคำสั่ง ทำงานเหมือนกับว่าเป็น Linux อย่าลังเลที่จะแก้ไขอย่างใดอย่างหนึ่งสำหรับความต้องการส่วนบุคคลของคุณ เพียงตั้งชื่อมันว่า useradd.sh และตั้งค่าการอนุญาตที่ถูกต้อง ( chmod 0700 useradd.sh
ในกรณีของฉัน) ขอบคุณbispymusic, Alex Leach, Kentสำหรับการช่วยเหลือของพวกเขา
ทดสอบ OS X High Sierra แล้ว
#!/bin/sh
if [[ `id -u` != 0 ]]; then
echo "Must be root to run script"
exit
fi
read -p "Enter user name and press [ENTER]: " UserName
if [[ $UserName == `dscl . -list /Users UniqueID | awk '{print $1}' | grep -w $UserName` ]]; then
echo "User already exists!"
exit 0
fi
read -p "Enter real name and press [ENTER]: " RealName
read -p "Enter PrimaryGroupID (80 - admin, 20 - user) and press [ENTER]: " PrimaryGroupID
LastID=`dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1`
NextID=$((LastID + 1))
. /etc/rc.common
dscl . create /Users/$UserName
dscl . create /Users/$UserName RealName $RealName
read -p "Enter password hint and press [ENTER]: " PasswordHint
dscl . create /Users/$UserName hint $PasswordHint
PasswordHint=0
echo " "
read -s -p "Enter Account Password and press [ENTER]: " AccountPassword
echo " "
read -s -p "Enter Account Password again and press [ENTER]: " AccountPasswordRepeat
if [[ $AccountPassword == $AccountPasswordRepeat ]]; then
dscl . passwd /Users/$UserName $AccountPassword
AccountPassword=0
else
echo "Passwords do not match!"
exit 1
fi
echo " "
dscl . create /Users/$UserName UniqueID $NextID
dscl . create /Users/$UserName PrimaryGroupID $PrimaryGroupID
dscl . create /Users/$UserName UserShell /bin/bash
dscl . create /Users/$UserName NFSHomeDirectory /Users/$UserName
createhomedir -u $UserName -c
echo " "
echo "New user `dscl . -list /Users UniqueID | awk '{print $1}' | grep -w $UserName` has been created with unique ID `dscl . -list /Users UniqueID | grep -w $UserName | awk '{print $2}'`"
คุณสามารถได้รับเดียวกันจากส่วนสำคัญของฉัน
NextID=$((`dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1` + 1))
แต่มันดูดีขึ้นและชัดเจนขึ้นกว่าเดิมในตอนนี้