কমান্ড লাইন থেকে নতুন ব্যবহারকারী তৈরি করতে কোন পদক্ষেপের প্রয়োজন?


27

কোন কমান্ড (বা স্ক্রিপ্ট) মাউন্টেন সিংহটিতে সম্পূর্ণ কার্যকরী ব্যবহারকারী অ্যাকাউন্ট তৈরি করতে পারে, কেবলমাত্র কমান্ড লাইন থেকে টার্মিনাল বা এসএসএসের মাধ্যমে চলবে running

এটা তোলে একটি বিদ্যমান মত দেখায় যুগল এর উত্তর কাজ করতে পারে, কিন্তু আমি যদি সেখানে একটি সংক্ষিপ্ত স্ক্রিপ্ট অথবা মাউন্টেন লায়ন উপর সম্পূর্ণরূপে কার্যকরী ব্যবহারকারীর অ্যাকাউন্ট তৈরি করার জন্য টুল ছিল তুলবেন?

উত্তর:


32

নেটInstall প্রক্রিয়ার অংশ হিসাবে এটি পরিচালনা করার জন্য আমি কাজের জন্য লিখেছিলাম একটি শেল স্ক্রিপ্ট (ইমেজিং প্রক্রিয়া চলাকালীন স্থানীয় প্রশাসক অ্যাকাউন্ট তৈরি করা) is

#!/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" ফাইল হিসাবে সংরক্ষণ করেছি।
  • যেহেতু এটি নেট ইনস্টল চলাকালীন কার্যকর হয় এটি রুট হিসাবে চলে এবং সঠিকভাবে কাজ করতে রুট হিসাবে চালানো দরকার। আপনি প্রথম দুটি লাইন বিয়োগ করতে পারেন, প্রতিটি পরবর্তী লাইনের শুরুতে একটি "sudo" যুক্ত করতে পারেন এবং এটিকে ম্যানুয়ালি টার্মিনালের স্বতন্ত্র কমান্ড হিসাবে চালাতে পারেন।
  • 501 থেকে এমন একটি সংখ্যায় ইউনিকআইডি সংশোধন করুন যা আপনি জানতে পারবেন যে সমস্ত সিস্টেমে নিরাপদ (501 ম্যাকের উপরে তৈরি প্রথম অ্যাকাউন্ট দ্বারা নেওয়া হয়, সাধারণত আপনার সিস্টেমে কতজন ব্যবহারকারী রয়েছেন তার উপর নির্ভর করে 550 এর মতো উচ্চতর কিছু সম্ভবত নিরাপদ হবে) ।
  • 80 এর প্রাথমিক গোষ্ঠী একটি অ্যাডমিন ব্যবহারকারী তৈরি করে। একটি স্ট্যান্ডার্ড ব্যবহারকারী তৈরি করতে 20 এর প্রাথমিক গোষ্ঠী পরিবর্তন করুন।
  • আমি কোনও সমস্যা ছাড়াই এইভাবে 50 টিরও বেশি ম্যাক ভালভাবে চিত্রিত করেছি। আমি এই অ্যাকাউন্টটি এসএসএইচের মাধ্যমে কমান্ড চালাতে, এআরডি দিয়ে প্যাচগুলি সরিয়ে রাখতে এবং স্থানীয় ডেস্ক সাইড প্রশাসন করতে ব্যবহার করি।

প্রতিশ্রুতিবদ্ধ দেখাচ্ছে - খুব শীঘ্রই এটি পরীক্ষা করা হবে!
bmike

আমি যখন স্ক্রিপ্টটিতে ভেরিয়েবলগুলি পাস করে নিয়মিত ব্যবহারকারী তৈরি করতে এই স্ক্রিপ্টটি গ্রহণ করার চেষ্টা করি এবং গ্রহণ করি তখন যে সমস্যাটি আমার মনে হয় তা হ'ল শেষ লাইনের ব্যতীত সমস্ত কিছুই ঠিকঠাক কাজ করে। এটি হ'ল, dscl ব্যবহারকারী তৈরি করে এবং যখন আমি dscl ব্যবহার করি। ব্যবহারকারীদের তালিকা / ব্যবহারকারী, ঠিক আছে, তবে ছাঁটাই ব্যবহারকারীকে সনাক্ত করতে পারে না এবং যেহেতু আমি হোম ডিরেক্টরি অনুমতিগুলি সঠিকভাবে পরিবর্তন করতে পারি না, এটি সেই ব্যবহারকারীর লগ ইন করতে দেয় না Any কোনও ধারণা?

আমি মনে করি আমি পারবো. শেল স্ক্রিপ্টিংয়ের ক্ষেত্রে আমার একটি দুর্বলতা হ'ল আমি কখনই ভেরিয়েবলের ব্যবহার খুব ভালভাবে শিখিনি, বেশিরভাগ কারণ যে আমার কাজের এই মুহুর্তে আমি আসলে তাদের কোনও কিছুর জন্য ব্যবহার করার প্রয়োজন পড়েনি। হতে পারে @ বিমাইক বা অন্য কেউ পরামর্শ দিতে সক্ষম হতে পারে।
বিসপিমিউজ

@ হ্যাকিনটোসকোট আপনি কি আপনার স্ক্রিপ্ট পোস্ট করতে পারবেন? আপনার কমান্ডে, আপনি "/ ব্যবহারকারীদের" ছোট "টাইপ করেছেন, যখন এটি বাস্তবে" / ব্যবহারকারী "থাকে। আমি সন্দেহ করি এটি আপনার স্ক্রিপ্টের সাথে সমস্যা; তবে, তাজা চোখ পরীক্ষা করে এটি সম্ভবত মোটামুটি দ্রুত খুঁজে পেতে সক্ষম হবে। আমি একটি অনুরূপ স্ক্রিপ্ট পেয়েছি যা প্রকৃতপক্ষে একাধিক ব্যবহারকারীকে সেট আপ করে, তাই ভেরিয়েবলগুলির ব্যবহার নিজেই কোনও সমস্যা নয়।
ক্যান্ট

2
শেষ দুটি লাইনের পরিবর্তে ( cp -R ...; chown -R ...) আপনি কমান্ডটি ব্যবহার করতে পারেন createhomedir -u administratorcreatehomedirএকটি ম্যান পেজও আছে।
অ্যালেক্স লিচ

13

এটি আরও স্বয়ংক্রিয় করতে, নিম্নলিখিত লাইনটি পরবর্তী "উপলব্ধ" ব্যবহারকারীর আইডিটি ব্যবহার করতে ব্যবহার করা যেতে পারে যদি আপনি এমন একটি ম্যাক চালিয়ে যাচ্ছেন যা ইতিমধ্যে ব্যবহারকারীরা সেট আপ করেছে।

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

NextID=$((LastID + 1))

তারপরে, বিসপিমিউজিকের উত্তরগুলির সাথে সম্পর্কিত লাইনটি পরিবর্তন করা যেতে পারে:

 dscl . create /Users/administrator UniqueID $NextID

2

উপরের উত্তরে আমার কিছু আপডেট আছে।

dscl / -append /Groups/admin GroupMembership newUserName

এই আদেশটি ব্যবহারকারীর প্রশাসনিক অ্যাক্সেস তৈরি করতে ব্যবহার করতে পারে। যদি এই কমান্ডটি সরবরাহ না করা হয় তবে ব্যবহারকারী স্বয়ংক্রিয়ভাবে মানক ব্যবহারকারী হিসাবে সেট হয়ে যাবে।

dscl . create /Users/newUserName PrimaryGroupID 80

এটি ব্যবহারকারীর প্রাথমিক গ্রুপ আইডি সেট করে sets 80 এর অর্থ অ্যাডমিন এবং 20 এর অর্থ কর্মী । এবং 20 এ সেট করা ব্যবহারকারীকে মানক করে তুলবে না। যদি না প্রথম কমান্ডের উল্লেখ না করা হয়।


স্পষ্ট করে বলতে গেলে, এই আদেশগুলির মধ্যে দুটিই কি একই কাজটি সম্পাদন করবে?
ম্যাকগ্যাব্রিয়েল

আমি প্রথম কমান্ডটি / গোষ্ঠী / প্রশাসকের সাথে যুক্ত করে পছন্দ করি ।
বিপিন জনি

0

কমান্ড লাইনটি ব্যবহার করে ম্যাক্স ওএস এক্সে নতুন ব্যবহারকারী যুক্ত করতে আমি লিখেছিলাম এমন একটি শেল স্ক্রিপ্ট। এটি লিনাক্সের মতোই কাজ করে। আপনার ব্যক্তিগত প্রয়োজনের জন্য নির্দ্বিধায় এডিট করুন। কেবল এটির নাম দিন.শাদ করুন এবং সঠিক অনুমতি সেট করুন ( chmod 0700 useradd.shআমার ক্ষেত্রে)। বিস্কেম মিউজিক, অ্যালেক্স লিচ, কেন্ট তাদের অবদানের জন্য ধন্যবাদ Thanks

ওএস এক্স হাই সিয়েরা পরীক্ষিত

#!/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))তবে এটি এখন আরও ভাল and
ইগোর ভোলটাইক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.