ขั้นตอนใดที่จำเป็นในการสร้างผู้ใช้ใหม่จากบรรทัดคำสั่ง


27

คำสั่งใด (หรือสคริปต์) สามารถสร้างบัญชีผู้ใช้ที่ทำงานได้อย่างสมบูรณ์บน Mountain Lion โดยเรียกใช้จากบรรทัดคำสั่งผ่านเทอร์มินัลหรือ ssh เท่านั้น

ดูเหมือนว่ามีอยู่คู่ของคำตอบอาจจะทำงาน แต่ผมสงสัยว่าถ้ามีสคริปต์สั้นหรือเครื่องมือสำหรับการสร้างอย่างเต็มที่ผู้ใช้ทำงานในบัญชี Mountain Lion?

คำตอบ:


33

นี่คือเชลล์สคริปต์ที่ฉันเขียนในที่ทำงานเพื่อจัดการสิ่งนี้เป็นส่วนหนึ่งของกระบวนการ 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

หมายเหตุบางประการที่จะพูดถึง:

  • ฉันบันทึกสิ่งนี้เป็นไฟล์ ".sh" ที่ปฏิบัติการได้
  • เนื่องจากมันทำงานในระหว่าง NetInstall มันจะทำงานในฐานะ root และจำเป็นต้องทำงานเป็น root เพื่อให้ทำงานได้อย่างถูกต้อง นอกจากนี้คุณยังสามารถลบสองบรรทัดแรกเพิ่ม "sudo" ไปยังจุดเริ่มต้นของแต่ละบรรทัดที่ตามมาและเรียกใช้เหล่านี้ด้วยตนเองเป็นคำสั่งแต่ละรายการใน Terminal
  • ปรับเปลี่ยน UniqueID จาก 501 เป็นหมายเลขที่คุณจะรู้ว่าปลอดภัยในทุกระบบ (501 ถูกใช้โดยบัญชีแรกที่สร้างบน Mac โดยทั่วไปสิ่งที่สูงกว่าเช่น 550 จะปลอดภัยขึ้นอยู่กับจำนวนผู้ใช้ที่คุณมีในระบบของคุณ) .
  • PrimaryGroupID จาก 80 สร้างผู้ใช้ผู้ดูแลระบบ เปลี่ยนเป็น PrimaryGroupID จาก 20 เพื่อสร้างผู้ใช้มาตรฐาน
  • ฉันถ่ายภาพได้ดีกว่า 50 Macs ด้วยวิธีนี้โดยไม่มีปัญหา ฉันใช้บัญชีนี้เพื่อเรียกใช้คำสั่งผ่าน SSH เพื่อผลักดันโปรแกรมปะแก้ผ่าน ARD และทำการดูแลระบบโต๊ะ

ดูมีแนวโน้ม - จะทดสอบมันเร็ว ๆ นี้!
bmike

ปัญหาที่ฉันดูเหมือนจะมีเมื่อฉันพยายามและปรับสคริปต์นี้เพื่อสร้างผู้ใช้ปกติโดยการส่งตัวแปรไปยังสคริปต์คือทุกอย่างยกเว้นบรรทัดสุดท้ายนั้นใช้ได้ดี นั่นคือ dscl สร้างผู้ใช้และเมื่อฉันใช้ dscl รายการ / ผู้ใช้ผู้ใช้แสดงได้ดี แต่ chown ไม่รู้จักผู้ใช้และเนื่องจากฉันไม่สามารถเปลี่ยนการอนุญาตไดเรกทอรีบ้านอย่างถูกต้องจะไม่อนุญาตให้ผู้ใช้นั้นเข้าสู่ระบบแนวคิดใด ๆ

ผมอยากจะทำได้. หนึ่งในจุดอ่อนของฉันเมื่อพูดถึงการเขียนสคริปต์เชลล์คือฉันไม่เคยเรียนรู้การใช้งานตัวแปรได้ดีนักส่วนใหญ่เป็นเพราะฉันไม่จำเป็นต้องใช้ตัวแปรเหล่านี้ในงานของฉัน อาจ @bike หรือคนอื่นอาจจะสามารถให้คำแนะนำได้
bispymusic

@HackintoshCoat คุณสามารถโพสต์สคริปต์ของคุณ? ในคำสั่งของคุณคุณได้พิมพ์ "/ users" ตัวพิมพ์เล็กเมื่อเป็นจริง "/ Users" ฉันสงสัยว่าเป็นปัญหากับสคริปต์ของคุณ แต่การตรวจสอบดวงตาที่สดใหม่อาจจะสามารถค้นหาปัญหาได้อย่างรวดเร็ว ฉันมีสคริปต์ที่คล้ายกันซึ่งตั้งค่าผู้ใช้หลายคนดังนั้นการใช้ตัวแปรเองจึงไม่ใช่ปัญหา
Kent

2
แทนของทั้งสองบรรทัดสุดท้าย ( cp -R ...; chown -R ...) createhomedir -u administratorคุณสามารถใช้คำสั่ง createhomedirมีหน้าคนด้วย
Alex Leach

14

หากต้องการดำเนินการนี้โดยอัตโนมัติบรรทัดต่อไปนี้สามารถใช้เพื่อรับ ID ผู้ใช้ "ว่าง" ถัดไปหากคุณใช้งานบน mac ที่มีผู้ใช้ตั้งค่าไว้แล้ว

LastID=`dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1`

NextID=$((LastID + 1))

จากนั้นบรรทัดที่สอดคล้องกันในคำตอบของ bispymusic ข้างต้นสามารถเปลี่ยนแปลงได้:

 dscl . create /Users/administrator UniqueID $NextID

2

ฉันมีการอัปเดตเกี่ยวกับคำตอบข้างต้น

dscl / -append /Groups/admin GroupMembership newUserName

คำสั่งนี้สามารถใช้สำหรับทำให้ผู้ใช้มีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบ หากไม่ได้ระบุคำสั่งนี้ผู้ใช้จะถูกตั้งเป็นผู้ใช้มาตรฐานโดยอัตโนมัติ

dscl . create /Users/newUserName PrimaryGroupID 80

ชุดนี้ ID กลุ่มหลักของผู้ใช้ 80 วิธีการดูแลระบบ และ 20 หมายถึงพนักงาน และการตั้งค่าเป็น 20 จะไม่ทำให้ผู้ใช้มาตรฐาน ยกเว้นว่าไม่มีการกล่าวถึงคำสั่งแรก


เพื่อชี้แจงคำสั่งอย่างใดอย่างหนึ่งเหล่านี้จะประสบความสำเร็จในสิ่งเดียวกัน
MaxGabriel

ฉันชอบคำสั่งแรกผนวกกับ/ กลุ่ม / ผู้ดูแลระบบ
Vipin Johney

0

นี่คือเชลล์สคริปต์ที่ฉันเขียนเพื่อเพิ่มผู้ใช้ใหม่ใน 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))แต่มันดูดีขึ้นและชัดเจนขึ้นกว่าเดิมในตอนนี้
Igor Voltaic
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.