ฉันต้องการที่จะสร้างผู้ใช้ใหม่จากบรรทัดคำสั่งเมื่อฉันเข้าสู่ระบบในฐานะผู้ดูแล โดยเฉพาะฉันกำลังมองหาadduser
คำสั่งเทียบเท่าบน Linux
ฉันต้องการที่จะสร้างผู้ใช้ใหม่จากบรรทัดคำสั่งเมื่อฉันเข้าสู่ระบบในฐานะผู้ดูแล โดยเฉพาะฉันกำลังมองหาadduser
คำสั่งเทียบเท่าบน Linux
คำตอบ:
มีสคริปต์ที่ดีอยู่ที่http://wiki.freegeek.org/index.php/Mac_OSX_adduser_script อย่างไรก็ตามมีตัวพิมพ์ผิดหลายตัวและบางครั้งก็ไม่ยืดหยุ่นพอดังนั้นนี่คือเวอร์ชันที่แก้ไขของฉันพร้อมการปรับปรุงบางอย่าง:
#!/bin/bash
# =========================
# Add User OS X Interactive Command Line
# =========================
getHiddenUserUid()
{
local __UIDS=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ugr)
#echo $__UIDS
local __NewUID
for __NewUID in $__UIDS
do
if [[ $__NewUID -lt 499 ]] ; then
break;
fi
done
echo $((__NewUID+1))
}
getInteractiveUserUid()
{
# Find out the next available user ID
local __MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
echo $((__MAXID+1))
}
if [ $UID -ne 0 ] ; then echo "Please run $0 as root." && exit 1; fi
read -p "Enter your desired user name: " USERNAME
read -p "Enter a full name for this user: " FULLNAME
read -s -p "Enter a password for this user: " PASSWORD
echo
read -s -p "Validate a password: " PASSWORD_VALIDATE
echo
if [[ $PASSWORD != $PASSWORD_VALIDATE ]] ; then
echo "Passwords do not match!"
exit 1;
fi
# ====
# A list of (secondary) groups the user should belong to
# This makes the difference between admin and non-admin users.
read -p "Is this an administrative user? [y/n] (n): " GROUP_ADD
GROUP_ADD=${GROUP_ADD:-n}
if [ "$GROUP_ADD" = n ] ; then
SECONDARY_GROUPS="staff" # for a non-admin user
elif [ "$GROUP_ADD" = y ] ; then
SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user
else
echo "You did not make a valid selection!"
exit 1;
fi
# ====
# Create a UID that is not currently in use
read -p "Should this user have interactive access? [y/n] (y): " IS_INTERACTIVE
IS_INTERACTIVE=${IS_INTERACTIVE:-y}
if [ "$IS_INTERACTIVE" = y ] ; then
USERID=$(getInteractiveUserUid)
elif [ "$IS_INTERACTIVE" = n ] ; then
USERID=$(getHiddenUserUid)
else
echo "You did not make a valid selection!"
exit 1;
fi
echo "Going to create user as:"
echo "User name: " $USERNAME
echo "Full name: " $FULLNAME
echo "Secondary groups: " $SECONDARY_GROUPS
echo "UniqueID: " $USERID
read -p "Is this information correct? [y/n] (y): " IS_INFO_CORRECT
IS_INFO_CORRECT=${IS_INFO_CORRECT:-y}
if [ "$IS_INFO_CORRECT" = y ] ; then
echo "Configuring Open Directory..."
elif [ "$IS_INFO_CORRECT" = n ] ; then
echo "User creation cancelled!"
exit 1;
else
echo "You did not make a valid selection!"
exit 1;
fi
# Create the user account by running dscl (normally you would have to do each of these commands one
# by one in an obnoxious and time consuming way.
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME
dscl . -passwd /Users/$USERNAME $PASSWORD
# Add user to any specified groups
echo "Adding user to specified groups..."
for GROUP in $SECONDARY_GROUPS ; do
dseditgroup -o edit -t user -a $USERNAME $GROUP
done
# Create the home directory
echo "Creating home directory..."
createhomedir -c 2>&1 | grep -v "shell-init"
echo "Created user #$USERID: $USERNAME ($FULLNAME)"
ฉันคิดว่าคุณกำลังมองหาคำสั่ง dscl Niutil ดูเหมือน NetInfo ซึ่งเลิกใช้แล้วใน OS X เนื่องจาก Open Directory aka LDAP
Dscl หรือ Directory Services Command Line สามารถใช้เพื่อแก้ไข Open Directory สำหรับทั้งที่เก็บข้อมูลผู้ใช้ภายในหรือระยะไกล มันสามารถทำได้ด้วยคำสั่ง sudo แต่มันง่ายกว่าที่จะใช้เป็น root
ต่อไปนี้เป็นบทช่วยสอนสั้น ๆ และไม่เพียงพอสูง: ในเทอร์มินัล sudo -s เพื่อสลับผู้ใช้ของคุณเป็นรูท ในการสร้างบัญชีผู้ใช้ที่ใช้งานได้ชื่อ dscl2 คุณต้องทำสิ่งต่อไปนี้:
dscl . -create /Users/dscl2
dscl . -create /Users/dscl2 UserShell /bin/bash
dscl . -create /Users/dscl2 RealName "DSCL 2"
dscl . -create /Users/dscl2 UniqueID 8005
dscl . -create /Users/dscl2 PrimaryGroupID 20
dscl . -create /Users/dscl2 NFSHomeDirectory /Users/dscl2
dscl . -passwd /Users/dscl2 password
UUID โดยทั่วไปจะอยู่ที่ประมาณ 501 หรือมากกว่า 501 เป็น UID เริ่มต้นสำหรับบัญชีแรกที่สร้างขึ้น UID ที่น้อยกว่า 500 จะไม่แสดงในบานหน้าต่างบัญชีตามค่าเริ่มต้น เลือกหมายเลขที่คุณต้องการ แต่ให้แน่ใจว่าเป็นหมายเลขเฉพาะในระบบโลคัล อย่าเขียนทับ UID ที่มีอยู่ไม่เช่นนั้นคุณจะมีปัญหาใหญ่
Dscl มีโหมดการโต้ตอบเช่นกันซึ่งทำงานแตกต่างกันเล็กน้อย ป้อนเพียง "dscl" ที่พรอมต์เพื่อเข้าสู่โหมดโต้ตอบ
หากคุณอยู่ในโหมดโต้ตอบให้พิมพ์ ls เพื่อแสดงว่ามีไดเรกทอรีใดบ้าง คุณควรเห็น BSD, LDAP และ Local คุณนำทางผ่านไดเรกทอรีด้วย cd ดูหน้าคนของเพื่อนของคุณสำหรับข้อมูลเพิ่มเติม