मैं मशीन में ssh'ing के बाद दूरस्थ रूप से Mac OS X 10.5 में नए उपयोगकर्ता बनाने में सक्षम होना चाहूंगा। मैं यह कैसे करु?
मैं मशीन में ssh'ing के बाद दूरस्थ रूप से Mac OS X 10.5 में नए उपयोगकर्ता बनाने में सक्षम होना चाहूंगा। मैं यह कैसे करु?
जवाबों:
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
useradd
सिंटैक्स में पोर्ट किया ।
PrimaryGroupID 80
है admin
, तो luser
उपयोग कर सकते हैं sudo
अगर तुम उसे प्रशासकों के समूह में शामिल नहीं भी।
(इस जवाब को पामर की प्रक्रिया में कुछ रिक्तता भरने के लिए एक परिशिष्ट माना जाना चाहिए)
आपके लिए नए उपयोगकर्ता के लिए अप्रयुक्त यूनिकआईडी लेने के लिए, आप इसका उपयोग कर सकते हैं:
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 कमांड है, लेकिन जब मैंने इसका परीक्षण किया तो यह काम नहीं किया।)
sudo createhomedir -s
ओपन डायरेक्टरी रिप्लेकस / फाइलशेयर पर कॉल (IIRC) करती है, और वे खुशी से होम डायरेक्टरी बनाते हैं।
dscl -list
256 परिणामों तक सीमित है, इसलिए यदि आपके पास 256 से अधिक उपयोगकर्ता हैं, तो यह तकनीक एक अद्वितीय यूआईडी की गारंटी देने में विफल होगी।
यदि आपके पास बनाने के लिए उपयोगकर्ताओं का एक समूह है, तो संरचित पाठ फ़ाइल बनाना और उसे कार्य करने के dsimport
लिए पास करना संभव है।
Apple के कमांड-लाइन प्रशासन गाइड के उपयोगकर्ताओं और समूहों पर एक पूरा अध्याय है।
खाता बनाने से पहले एक अद्वितीय उपयोगकर्ता आईडी चुनने और चुनने का एक और तरीका यह है कि आप सूची को देखें और जांचें कि आप जिसको उपयोग करना चाहते हैं वह नहीं है:
sudo dscl . list /Users uid
sudo dscl . list groups gid
यदि आपको एक निश्चित आईडी का उपयोग करने की आवश्यकता है तो आसान है
dscl -list
256 परिणामों तक सीमित है, इसलिए यदि आपके पास 256 से अधिक उपयोगकर्ता हैं, तो यह तकनीक एक अद्वितीय यूआईडी की गारंटी देने में विफल होगी।
grep
साथ id
नए उपयोगकर्ता के लिए उपयोग करने का मन था
मैंने यहाँ अलग-अलग उत्तरों का लाभ उठाया है जो मुझे लगता है कि उपयोगकर्ता खाते बनाने के लिए एक अच्छी स्क्रिप्ट है। बेशक, यह 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 के संस्करण के आधार पर भिन्न हो सकता है। जब मैं id
OS X 10.5 पर एक व्यवस्थापक के रूप में दौड़ता हूं तो मुझे OS X 10.6 पर एक व्यवस्थापक के रूप में चलने पर अलग-अलग परिणाम मिलते हैं ।
dscl -list
256 परिणामों तक सीमित है, इसलिए यदि आपके पास 256 से अधिक उपयोगकर्ता हैं, तो यह तकनीक एक अद्वितीय यूआईडी की गारंटी देने में विफल होगी।
मैंने शुरू किया एक छोटे से आवरण के बारे में dscl
है कि लेता useradd
है मापदंडों - यह पूरा नहीं है (और न ही मुझे लगता है कि हो सकता है, के रूप में कुछ बातें ओएस एक्स पर संभव नहीं हैं करते हैं), लेकिन मैं इसे इस्तेमाल किया कुछ उपयोगकर्ता निर्माण करना है।
सभी मापदंडों के लिए ढांचा है, इसलिए यदि आप गिटहब की भयानक सामाजिक विशेषताओं का लाभ उठाना चाहते हैं, तो यह करना आसान है।
single_user
मोड (सुरक्षा रीसेट) से यह करना चाहते हैं तो आपको नीचे होल्ड करने की आवश्यकता होगीCommand-S
, डिस्क पर प्रति स्क्रीन विवरण तक पहुंच प्राप्त करें। , और फिरrm /var/db/.AppleSetupDone
जो आपको एक नया व्यवस्थापक खाता बनाने देगा। आशा है कि यह किसी की मदद करता है