मैं मैक ओएस एक्स 10.5 में टर्मिनल से उपयोगकर्ता खाते कैसे बनाऊं?


86

मैं मशीन में ssh'ing के बाद दूरस्थ रूप से Mac OS X 10.5 में नए उपयोगकर्ता बनाने में सक्षम होना चाहूंगा। मैं यह कैसे करु?


मेरे पास अभी तक जवाब देने के लिए प्रतिष्ठा नहीं है, लेकिन यदि आप single_userमोड (सुरक्षा रीसेट) से यह करना चाहते हैं तो आपको नीचे होल्ड करने की आवश्यकता होगी Command-S, डिस्क पर प्रति स्क्रीन विवरण तक पहुंच प्राप्त करें। , और फिर rm /var/db/.AppleSetupDoneजो आपको एक नया व्यवस्थापक खाता बनाने देगा। आशा है कि यह किसी की मदद करता है
न्यू अलेक्जेंड्रिया

जवाबों:


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

फिर आप उपयोगकर्ता के पासवर्ड को बदलने के लिए पासवार्ड का उपयोग कर सकते हैं, या उपयोग कर सकते हैं:

dscl . -passwd /Users/luser password

आपको उपयोगकर्ता की होम डायरेक्टरी के लिए / Users / luser बनाना होगा और स्वामित्व बदलना होगा ताकि उपयोगकर्ता इसे एक्सेस कर सके, और सुनिश्चित करें कि UniqueID वास्तव में अद्वितीय है।

यह लाइन उपयोगकर्ता को व्यवस्थापक समूह में जोड़ेगी:

dscl . -append /Groups/admin GroupMembership luser

7
मैं यह कैसे सुनिश्चित करूँ कि यूआईडी अद्वितीय है?
JR लॉरहॉर्न

3
कोई स्वचालित तरीका नहीं है; यदि आप इसे स्क्रिप्ट करते हैं, तो आप इसे "id ####" कमांड चला सकते हैं और सुनिश्चित कर सकते हैं कि यह "ऐसा कोई उपयोगकर्ता नहीं" या ऐसा कोई हैक नहीं करता है।
पामर

1
यदि आपके पास अनुमति नहीं है तो sudo का उपयोग करना याद रखें।
रफी खाचदौरियन

BTW, चूंकि यह इस तरह से अधिक क्रियात्मक होना चाहिए, इसलिए मैंने इन आदेशों को useraddसिंटैक्स में पोर्ट किया ।
Xiong Chiamiov

1
ध्यान दें कि PrimaryGroupID 80है admin, तो luserउपयोग कर सकते हैं sudoअगर तुम उसे प्रशासकों के समूह में शामिल नहीं भी।
रस्सो

20

(इस जवाब को पामर की प्रक्रिया में कुछ रिक्तता भरने के लिए एक परिशिष्ट माना जाना चाहिए)

आपके लिए नए उपयोगकर्ता के लिए अप्रयुक्त यूनिकआईडी लेने के लिए, आप इसका उपयोग कर सकते हैं:

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
मैंने एक ऐसी स्क्रिप्ट बनाई जो नए उपयोगकर्ताओं के साथ हमारे ओपन डायरेक्टरी मास्टर को पॉप्युलेट करती है, और फिर sudo createhomedir -sओपन डायरेक्टरी रिप्लेकस / फाइलशेयर पर कॉल (IIRC) करती है, और वे खुशी से होम डायरेक्टरी बनाते हैं।
क्लिंटन ब्लैकमोर

2
dscl -list256 परिणामों तक सीमित है, इसलिए यदि आपके पास 256 से अधिक उपयोगकर्ता हैं, तो यह तकनीक एक अद्वितीय यूआईडी की गारंटी देने में विफल होगी।
स्मोक्रीस

2 अतिरिक्त पाइपों को निकालने के लिए छोटी चाल (केवल awk का उपयोग करें): dscl -लिस्ट / उपयोगकर्ता यूनिकआईडी | awk '{if ($ 2> max) अधिकतम = $ 2; } END {प्रिंट अधिकतम + 1; } '
वाल्टोनी बोवेनटुरा

@ValtoniBoaventura नीस। मैंने कहा कि उत्तर में (डिफ़ॉल्ट रूप से मामले में कोई नियमित खाते नहीं हैं)। मैंने ड्रॉप बॉक्स एसीएल (जो 10.6 में जोड़ा गया था) सेट करने के लिए एक कदम भी जोड़ा।
गॉर्डन डेविसन

8

यदि आपके पास बनाने के लिए उपयोगकर्ताओं का एक समूह है, तो संरचित पाठ फ़ाइल बनाना और उसे कार्य करने के dsimportलिए पास करना संभव है।

Apple के कमांड-लाइन प्रशासन गाइड के उपयोगकर्ताओं और समूहों पर एक पूरा अध्याय है।


अजीब। ऐसा लगता है कि Apple ने शुरू में आपके द्वारा भेजे गए दस्तावेज़ के v10.5 को हटा दिया था, लेकिन v10.3 और एक कम व्यापक स्नो लेपर्ड संस्करण
chb

7

खाता बनाने से पहले एक अद्वितीय उपयोगकर्ता आईडी चुनने और चुनने का एक और तरीका यह है कि आप सूची को देखें और जांचें कि आप जिसको उपयोग करना चाहते हैं वह नहीं है:

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

यदि आपको एक निश्चित आईडी का उपयोग करने की आवश्यकता है तो आसान है


dscl -list256 परिणामों तक सीमित है, इसलिए यदि आपके पास 256 से अधिक उपयोगकर्ता हैं, तो यह तकनीक एक अद्वितीय यूआईडी की गारंटी देने में विफल होगी।
धूम्रपान करने वाला

हाँ, अभी उस उपयोगकर्ता को जोड़ने के लिए सबसे छोटा रास्ता यहीं है, बस आपके grepसाथ idनए उपयोगकर्ता के लिए उपयोग करने का मन था
yair

7

मैंने यहाँ अलग-अलग उत्तरों का लाभ उठाया है जो मुझे लगता है कि उपयोगकर्ता खाते बनाने के लिए एक अच्छी स्क्रिप्ट है। बेशक, यह ssh से एक समय में एक कमांड चलाने के लिए डिज़ाइन नहीं किया गया है; यह ओएस एक्स की पैकेज-आधारित छवि को संकलित करते समय स्क्रिप्ट चलाने के लिए बनाया गया है (जैसा कि कैस्पर इमेजिंग या इंस्टा डीएमजीजी द्वारा बनाया गया है )।

#!/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 के संस्करण के आधार पर भिन्न हो सकता है। जब मैं idOS X 10.5 पर एक व्यवस्थापक के रूप में दौड़ता हूं तो मुझे OS X 10.6 पर एक व्यवस्थापक के रूप में चलने पर अलग-अलग परिणाम मिलते हैं ।


एक अन्य जवाब में, इलियट ने चेतावनी दी कि 'createhomedir -c' कमांड, अंत की ओर, उस निर्देशिका के सभी उपयोगकर्ताओं के लिए खाते बनाएगा, जिनसे आप बाध्य हैं। ('-C' विकल्प, मैन पेज में, 'केवल लोकल होम पाथ्स के लिए होम डाइरेक्टरीज़ बनाता है।') एक और ऑप्शन है, '-u यूजरनेम', जो बेहतर काम कर सकता है।
क्लिंटन ब्लैकमोर

हैलो मैं ऊपर स्क्रिप्ट का उपयोग कर रहा हूँ। तो यह मेरा नया उपयोगकर्ता जोड़ता है लेकिन जब उपयोगकर्ता अपने कैलेंडर से कनेक्ट करेगा तो यह कहता है कि उसके पास अनुमतियाँ नहीं हैं! क्या आप मेरी मदद कर सकते हैं ?

@ जिमी: मैं सर्वरफॉल्ट पर एक नया प्रश्न पूछने की सलाह दूंगा और इस उत्तर को लिंक करने के बजाय केवल टिप्पणियों में एक प्रश्न पूछूंगा, जो शायद ही कभी देखा जाएगा। मुझे उम्मीद है कि अनुमति सही होगी। यदि आप किसी ऐसे फ़ाइल की पहचान कर सकते हैं, जिसमें सही अनुमतियाँ नहीं हैं, तो 'chown' और 'chmod' का उपयोग कर सकते हैं ... लेकिन मुझे नहीं पता कि यह कौन सा होगा।
क्लिंटन ब्लैकमोर

dscl -list256 परिणामों तक सीमित है, इसलिए यदि आपके पास 256 से अधिक उपयोगकर्ता हैं, तो यह तकनीक एक अद्वितीय यूआईडी की गारंटी देने में विफल होगी।
धूम्रपान करने वाला

4

मैंने शुरू किया एक छोटे से आवरण के बारे में dsclहै कि लेता useraddहै मापदंडों - यह पूरा नहीं है (और न ही मुझे लगता है कि हो सकता है, के रूप में कुछ बातें ओएस एक्स पर संभव नहीं हैं करते हैं), लेकिन मैं इसे इस्तेमाल किया कुछ उपयोगकर्ता निर्माण करना है।

सभी मापदंडों के लिए ढांचा है, इसलिए यदि आप गिटहब की भयानक सामाजिक विशेषताओं का लाभ उठाना चाहते हैं, तो यह करना आसान है।


# gem install osx-useradd.gemspecOS X 10.5 पर चलने ERROR: While executing gem ... (Gem::RemoteSourceException)और दूसरी पंक्ति में परिणाम है HTTP Response 301 fetching http://gems.rubyforge.org/yaml
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.