ฉันจะสร้างบัญชีผู้ใช้จาก Terminal ใน Mac OS X 10.5 ได้อย่างไร


86

ฉันต้องการสร้างผู้ใช้ใหม่ใน Mac OS X 10.5 จากระยะไกลหลังจากที่เข้าสู่เครื่อง ฉันจะทำสิ่งนี้ได้อย่างไร


ฉันยังไม่มีชื่อเสียงที่จะตอบ แต่ถ้าคุณกำลังมองหาวิธีการทำสิ่งนี้จากsingle_userโหมด (การตั้งค่าความปลอดภัย) จากนั้นคุณจะต้องรีบูตเครื่องค้างไว้Command-Sเพื่อรับสิทธิ์การเขียนดิสก์ต่อรายละเอียดบนหน้าจอ และจากนั้นrm /var/db/.AppleSetupDoneซึ่งจะช่วยให้คุณสร้างบัญชีผู้ดูแลระบบใหม่ หวังว่านี้จะช่วยให้ใครบางคน
ใหม่ Alexandria

คำตอบ:


80

ใช้คำสั่ง dscl ตัวอย่างนี้จะสร้างผู้ใช้ "luser" เช่น:

dscl . -create /Users/luser
dscl . -create /Users/luser UserShell /bin/bash
dscl . -create /Users/luser RealName "Lucius Q. User"
dscl . -create /Users/luser UniqueID "1010"
dscl . -create /Users/luser PrimaryGroupID 80
dscl . -create /Users/luser NFSHomeDirectory /Users/luser

จากนั้นคุณสามารถใช้ passwd เพื่อเปลี่ยนรหัสผ่านของผู้ใช้หรือใช้:

dscl . -passwd /Users/luser password

คุณจะต้องสร้าง / Users / luser สำหรับโฮมไดเร็กตอรี่ของผู้ใช้และเปลี่ยนความเป็นเจ้าของเพื่อให้ผู้ใช้สามารถเข้าถึงได้และให้แน่ใจว่า UniqueID นั้นแท้จริงแล้วไม่ซ้ำกัน

บรรทัดนี้จะเพิ่มผู้ใช้ในกลุ่มผู้ดูแลระบบ:

dscl . -append /Groups/admin GroupMembership luser

7
ฉันจะมั่นใจได้อย่างไรว่า UID นั้นไม่เหมือนใคร
JR Lawhorne

3
ไม่มีวิธีอัตโนมัติ หากคุณใช้สคริปต์นี้คุณก็สามารถให้มันรันคำสั่ง "id ####" และตรวจสอบให้แน่ใจว่ามันส่งคืน "ไม่มีผู้ใช้ดังกล่าว" หรือแฮ็กบางอย่าง
พาลเมอร์

1
อย่าลืมใช้ sudo ถ้าคุณไม่มีสิทธิ์ใช้งาน
Raffi Khatchadourian

BTW เนื่องจากนี่เป็นวิธีที่ verbose มากกว่าที่ควรจะเป็นฉันจึงส่งคำสั่งเหล่านี้ไปยังuseraddไวยากรณ์
Xiong Chiamiov

1
โปรดทราบว่าPrimaryGroupID 80เป็นadminเพื่อให้luserสามารถใช้งานsudoแม้ว่าคุณจะไม่เพิ่มเขาไปยังกลุ่มผู้บริหารของ
ruslo

20

(คำตอบนี้ควรได้รับการพิจารณาเป็นภาคผนวกเพื่อเติมในช่องว่างบางอย่างในขั้นตอนของพาลเมอร์)

ในการเลือก UniqueID ที่ไม่ได้ใช้สำหรับผู้ใช้ใหม่คุณสามารถใช้:

maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))

... จากนั้นใช้ลำดับของคำสั่ง dscl ที่ผู้ใช้สร้างบัญชีและสร้างโฮมไดเร็กตอรี่ของผู้ใช้ใหม่ด้วย:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser
if [[ "$(sw_vers -productVersion)" != 10.[0-5].* ]]; then
    # Set ACL on Drop Box in 10.6 and later
    chmod +a "user:luser allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" /Users/luser/Public/Drop\ Box
fi

(มีคำสั่ง createhomedir แต่มันไม่ทำงานเมื่อฉันทดสอบ)


1
ฉันสร้างสคริปต์ที่เติม Open Directory Master ของเรากับผู้ใช้ใหม่แล้วโทรsudo createhomedir -s(IIRC) ใน Open Directory Replicas / Fileshares และพวกเขาสร้างไดเรกทอรีภายในบ้านอย่างมีความสุข
Clinton Blackmore

2
dscl -listจำกัด อยู่ที่ 256 ผลลัพธ์ดังนั้นหากคุณมีผู้ใช้มากกว่า 256 รายเทคนิคนี้จะไม่รับประกัน UID ที่ไม่ซ้ำ
smokris

เคล็ดลับเล็กน้อยในการขับไล่ท่อ 2 ท่อเพิ่มเติม (ใช้ awk เท่านั้น): dscl -list / Users UniqueID | awk '{ถ้า ($ 2> สูงสุด) สูงสุด = $ 2; } END {พิมพ์สูงสุด + 1; } '
Valtoni Boaventura

@ValtoniBoaventura นิสัยดี ฉันรวมว่าในคำตอบ (โดยค่าเริ่มต้นในกรณีที่ไม่มีบัญชีปกติ) ฉันยังเพิ่มขั้นตอนในการตั้งค่า Drop Box ACL (ซึ่งเพิ่มใน 10.6)
Gordon Davisson

8

หากคุณมีผู้ใช้จำนวนมากที่จะสร้างมันเป็นไปได้ที่จะสร้างไฟล์ข้อความที่มีโครงสร้างและส่งต่อdsimportไปยังเพื่อทำงาน

คู่มือการบริหารบรรทัดคำสั่งของ Apple มีทั้งบทเกี่ยวกับผู้ใช้และกลุ่ม


แปลก Apple ดูเหมือนจะทำไปด้วย v10.5 ของเอกสารที่คุณอ้างถึงในตอนแรก แต่เก็บ v10.3และรุ่น Snow Leopard ที่
chb

7

อีกวิธีหนึ่งในการเลือกและเลือก ID ผู้ใช้ที่ไม่ซ้ำกันก่อนที่จะสร้างบัญชีคือการดูรายการและตรวจสอบว่าคุณต้องการใช้ไม่ได้อยู่ที่นั่น:

 sudo dscl . list /Users uid
 sudo dscl . list groups gid

มีประโยชน์ถ้าคุณต้องการใช้ ID ที่แน่นอน


dscl -listจำกัด อยู่ที่ 256 ผลลัพธ์ดังนั้นหากคุณมีผู้ใช้มากกว่า 256 รายเทคนิคนี้จะไม่รับประกัน UID ที่ไม่ซ้ำ
โมคริส

yup นั่นเป็นเส้นทางที่สั้นที่สุดในการเพิ่มผู้ใช้ที่นี่ในตอนนี้เพียงแค่grepเป็นไปตามที่idคุณมีในใจที่จะใช้สำหรับผู้ใช้ใหม่
yair

7

ฉันใช้ประโยชน์จากคำตอบต่าง ๆ ที่นี่เพื่อหาสิ่งที่ฉันคิดว่าเป็นสคริปต์ที่ดีในการสร้างบัญชีผู้ใช้ เป็นที่ยอมรับว่านี่ไม่ได้ออกแบบมาสำหรับการเรียกใช้คำสั่งในเวลาเดียวจาก ssh; มันถูกออกแบบมาให้ทำงานสคริปต์เมื่อรวบรวมภาพแพคเกจของ OS X (สร้างโดยCasper ImagingหรือInstaDMG )

#!/bin/bash
# This script creates a user account under Mac OS X
# (tested with 10.5 and 10.6; likely works with 10.4 but not earlier)
# Written by Clinton Blackmore, based on work at
# http://serverfault.com/questions/20702

# === Typically, this is all you need to edit ===

USERNAME=joeadmin
FULLNAME="Joe Admin"
PASSWORD="hard_to_hack"

# A list of (secondary) groups the user should belong to
# This makes the difference between admin and non-admin users.
# Leave only one uncommented
#SECONDARY_GROUPS=""  # for a non-admin user
SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
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 use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"

สคริปต์ทำให้คุณสามารถระบุกลุ่มที่ผู้ใช้ควรอยู่ ดูเหมือนว่าสิ่งนี้อาจแตกต่างกันไปขึ้นอยู่กับเวอร์ชั่นของ OS X ที่คุณใช้งาน ฉันได้รับผลลัพธ์ที่แตกต่างเมื่อฉันเรียกใช้idในฐานะผู้ดูแลระบบบน OS X 10.6 มากกว่าที่ฉันทำเมื่อใช้งานเป็นผู้ดูแลระบบบน OS X 10.5


ในคำตอบอื่นเอลเลียตเตือนว่าคำสั่ง 'createhomedir -c' จะสร้างบัญชีสำหรับผู้ใช้ทั้งหมดในไดเรกทอรีที่คุณผูกไว้ (ตัวเลือก '-c' ในหน้า man 'สร้างไดเรกทอรีบ้านสำหรับเส้นทางภายในบ้านเท่านั้น') มีอีกตัวเลือก '-u ชื่อผู้ใช้' ซึ่งอาจทำงานได้ดีกว่า
Clinton Blackmore

สวัสดีฉันใช้สคริปต์ด้านบน ดังนั้นมันจะเพิ่มผู้ใช้ใหม่ของฉัน แต่เมื่อผู้ใช้จะเชื่อมต่อกับปฏิทินของเขามันบอกว่าเขาไม่มีสิทธิ์! คุณสามารถช่วยฉันได้ไหม ?

@ จิมมี่: ฉันขอแนะนำให้ถามคำถามใหม่เกี่ยวกับความผิดพลาดของเซิร์ฟเวอร์และลิงก์ไปยังคำตอบนี้แทนที่จะถามคำถามในความคิดเห็นซึ่งจะไม่ค่อยเห็น ฉันคาดหวังว่าสิทธิ์จะถูกต้อง การใช้ 'chown' และ 'chmod' สามารถช่วยได้หากคุณสามารถระบุไฟล์ที่ไม่มีสิทธิ์ที่ถูกต้อง ... แต่ฉันไม่รู้ว่ามันควรจะเป็นไฟล์ไหน
Clinton Blackmore

dscl -listจำกัด อยู่ที่ 256 ผลลัพธ์ดังนั้นหากคุณมีผู้ใช้มากกว่า 256 รายเทคนิคนี้จะไม่รับประกัน UID ที่ไม่ซ้ำ
โมคริส

4

ผมเริ่มห่อเล็ก ๆ น้อย ๆเกี่ยวกับการdsclที่จะใช้useraddพารามิเตอร์ 's - มันไม่สมบูรณ์ (หรือไม่ผมคิดว่ามันอาจจะเป็นบางสิ่งบางอย่างไม่ได้เป็นไปได้บน OS X) แต่ฉันใช้มันเพื่อทำการสร้างผู้ใช้บางส่วน

เฟรมเวิร์กอยู่ที่นั่นสำหรับพารามิเตอร์ทั้งหมดดังนั้นหากคุณต้องการใช้ประโยชน์จากฟีเจอร์โซเชียลที่ยอดเยี่ยมของ GitHub มันง่ายที่จะทำ


ทำงาน# gem install osx-useradd.gemspecเกี่ยวกับผล OS X 10.5 ในและสายที่สองคือERROR: While executing gem ... (Gem::RemoteSourceException) HTTP Response 301 fetching http://gems.rubyforge.org/yaml
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.