سؤال كيف أقوم بإنشاء حسابات مستخدمين من المحطة الطرفية في نظام التشغيل Mac OS X 10.5؟


أود أن أتمكن من إنشاء مستخدمين جدد في نظام التشغيل Mac OS X 10.5 عن بعد بعد استخدام ssh'ing في الجهاز. كيف أقوم بهذا العمل؟


84
2018-06-05 18:07


الأصل


ليس لدي حتى الآن سمعة الإجابة ، ولكن إذا كنت تبحث عن كيفية القيام بذلك من single_user الوضع (إعادة تعيين الأمان) ، فستحتاج إلى إعادة التمهيد Command-S، اكتساب الوصول إلى القرص لكل تفاصيل تظهر على الشاشة ، ثم rm /var/db/.AppleSetupDone مما سيتيح لك إنشاء حساب مشرف جديد. أمل أن هذا يساعد شخصاما - New Alexandria


الأجوبة:


استخدم الأمر 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

80
2018-06-05 18:15



كيف أضمن أن UID فريد؟ - JR Lawhorne
لا توجد طريقة تلقائية إذا قمت بكتابة هذا يمكنك فقط تشغيل الأمر "معرف ####" وتأكد من إرجاع "لا يوجد مثل هذا المستخدم" أو بعض الاختراق. - palmer
تذكر استخدام sudo إذا لم يكن لديك أذونات. - Raffi Khatchadourian
راجع للشغل ، لأن هذا هو وسيلة أكثر دقة مما ينبغي أن يكون ، أنا استدار هذه الاوامر في useradd بناء الجملة. - Xiong Chiamiov
لاحظ أن PrimaryGroupID 80 هو admin، وبالتالي luser يمكن استخدام sudo حتى لو لم تقم بإضافته إلى مجموعة المسؤولين. - ruslo


(يجب اعتبار هذه الإجابة إضافة لملء بعض الفراغات في إجراء palmer)

لاختيار UniqueID غير المستخدم لك مستخدم جديد ، يمكنك استخدام:

maxid=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
newid=$((maxid+1))

... ثم استخدم تسلسل أوامر dscl palmer التي تم إنشاؤها لإنشاء الحساب ، ثم أنشئ الدليل الرئيسي للمستخدم الجديد باستخدام:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser

(هناك أمر createhomedir ، لكنه لم يعمل عندما اختبرت ذلك.)


20
2018-06-05 20:21



لقد قمت بإنشاء نص برمجي يقوم بتعبئة "دليل الدليل المفتوح" الخاص بنا مع مستخدمين جدد ، ثم مكالمات sudo createhomedir -s (IIRC) على النسخ المتماثلة دليل الدليل / Fileshares ، وأنهم يخلقون بسعادة الدلائل الرئيسية. - Clinton Blackmore
dscl -list يقتصر على 256 نتيجة ، لذلك إذا كان لديك أكثر من 256 مستخدم ، فستفشل هذه التقنية في ضمان UID فريد. - smokris


إذا كان لديك مجموعة من المستخدمين لإنشاء ، فمن الممكن إنشاء ملف نصي منظم وتمريرها إلى dsimport للقيام بهذه المهمة.

تفاح إدارة سطر الأوامر يحتوي الدليل على فصل كامل حول المستخدمين والمجموعات.


8
2018-06-05 19:19



الفردية. يبدو أن Apple قد استغنت عن الإصدار v10.5 من المستند الذي أشرت إليه في البداية ، ولكن أبقى v10.3 وأقل شمولية نسخة سنو ليوبارد - chb


هناك طريقة أخرى لاختيار معرف مستخدم فريد واختياره قبل إنشاء حساب ، وهي فقط للبحث في القائمة والتحقق من عدم وجودها:

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

مفيد إذا كنت بحاجة إلى استخدام معرف معين


7
2017-11-30 16:10



dscl -list يقتصر على 256 نتيجة ، لذلك إذا كان لديك أكثر من 256 مستخدم ، فستفشل هذه التقنية في ضمان UID فريد. - smokris
نعم هذا هو أقصر الطرق لإضافة هذا المستخدم هنا الآن ، فقط grep مع id كان لديك في العقل لاستخدامه للمستخدم الجديد - yair


لقد استفدت من الإجابات المختلفة هنا للتوصل إلى ما أعتقد أنه نص جيد لإنشاء حسابات مستخدمين. باعتراف الجميع ، لم يتم تصميم هذا الأمر لتشغيل أمر في وقت واحد من ssh؛ تم تصميم moreso ليكون برنامج نصي عند تجميع صورة على أساس حزمة OS X (كما تم إنشاؤها بواسطة كاسبر التصوير أو 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.


7
2018-01-14 23:02



وفي إجابة أخرى ، يحذر إيليوت من أن الأمر 'createhomedir -c' ، نحو النهاية ، سيخلق حسابات لجميع المستخدمين في الدليل الذي تلتزمون به. (الخيار '-c' ، في صفحة الرجل ، 'يخلق دلائل منزلية لمسارات منزلية محلية فقط.') هناك خيار آخر ، 'usu اسم المستخدم' ، قد يعمل بشكل أفضل. - Clinton Blackmore
مرحبا أنا باستخدام البرنامج النصي أعلاه. لذلك يضيف مستخدم جديد ولكن عندما يتصل المستخدم بالتقويم الخاص به ، يقول إنه ليس لديه الأذونات! هل يمكنك مساعدتي ؟
jimmy: أود أن أوصي بطرح سؤال جديد على serverfault والارتباط بهذه الإجابة بدلاً من مجرد طرح سؤال في التعليقات ، والتي ستندر مشاهدتها. أتوقع أن تكون الأذونات صحيحة. يمكن استخدام "chown" و "chmod" مساعدتك إذا تمكنت من تحديد ملف ليس لديه الأذونات الصحيحة ... ولكن لا أعرف أيهما سيكون. - Clinton Blackmore
dscl -list يقتصر على 256 نتيجة ، لذلك إذا كان لديك أكثر من 256 مستخدم ، فستفشل هذه التقنية في ضمان UID فريد. - smokris


بدأت غلاف صغير حول dscl أن يأخذ useraddمعلمات - انها ليست كاملة (ولا أعتقد أنه يمكن أن يكون ، لأن بعض الأشياء غير ممكن على OS X) ، لكنني استخدمته لإنشاء بعض المستخدمين.

يوجد الإطار لجميع المعلمات ، لذلك إذا كنت ترغب في الاستفادة من ميزات GitHub الاجتماعية الرائعة ، فمن السهل القيام بذلك.


4
2017-10-17 06:15