ওএস এক্সে ডেমন অ্যাকাউন্ট যুক্ত করুন


9

আমি আমার মেশিনে ম্যানুয়ালি একটি ডেমন (ওরাকল গ্রিড ইঞ্জিন) ইনস্টল করার চেষ্টা করছি এবং আমি এটি একটি বিচ্ছিন্ন অ্যাকাউন্টের অধীনে চালিত করতে চাই। ওএস এক্স-এর স্থানীয় মেশিনে "সিস্টেম" অ্যাকাউন্ট যুক্ত করার জন্য ডিরেক্টরি পরিষেবাগুলি ব্যবহার করে পছন্দের উপায়টি কী? এগুলির অনেকগুলি / etc / passwd ( _www, _dovecotইত্যাদি) তে উপস্থিত রয়েছে, তবে সেই ফাইলটির শীর্ষে থাকা মন্তব্যগুলিতে বলা হয় যে এটি একক ব্যবহারকারী মোড ব্যতীত ব্যবহৃত হয় না।

আমি 10.6 এ চালাচ্ছি, এবং কোনও বিশেষ নেটওয়ার্কযুক্ত অ্যাকাউন্ট পরিচালনার দরকার নেই। আমি সাধারণ কিছু আশা করছি - useraddপ্রায় প্রতিটি ইউনিক্স-এর মতো ওএসের সমতুল্য ।

উত্তর:


3

dscl হ'ল আদেশটি যা আপনি সন্ধান করছেন।


+1 কারণ এটিই সুনির্দিষ্ট উত্তর। আপনি যদি কোনও জিইউআই চান, তবে সার্ভার সরঞ্জামগুলি ডাউনলোড করতে পারেন এবং মূলত একই জিনিসটি করার জন্য আপনার নিজের মেশিনে ওয়ার্কগ্রুপ ম্যানেজারটিকে নির্দেশ করতে পারেন ..
জনি ওডম

12

আমি স্ক্রিপ্টটি সমপর্যায়ে চেষ্টা করেছি এবং কয়েকটি সমস্যা খুঁজে পেয়েছি। সুতরাং আমি এটিকে একটি নির্দিষ্ট ইউজারিডের জন্য এবং ওএস এক্স মাভারিক্সের জন্য (10.9) পরিবর্তন করেছি।

আমি দেখতে পেলাম যে মাভেরিক্সের অধীনে ব্যবহারকারীর অ্যাকাউন্টে একটি দু'জন বহিরাগত রেকর্ড যুক্ত ছিল - একটি পাসওয়ার্ডপলিসিঅ্যাপশন এবং একটি প্রমাণীকরণের অনুমোদন রেকর্ড - যা অন্য অন্তর্নির্মিত পরিষেবা ব্যবহারকারীর অ্যাকাউন্টগুলির সঠিকভাবে নকল করতে (যেমন _www) সরানোর প্রয়োজন ছিল।

আমি গ্রুপ অ্যাকাউন্টে পাসওয়ার্ড এবং রিয়েলনাম রেকর্ডগুলিও যুক্ত করেছি।

আমি কেবলমাত্র একটি ডাব্লুএসজিআই পরিষেবা অ্যাকাউন্টের জন্য একটি কাস্টম তৈরি করেছি script আপডেট হওয়া স্ক্রিপ্টটি এখানে।

#! /bin/bash
#

# Check that we are superuser (i.e. $(id -u) is zero)
if (( $(id -u) ))
then
    echo "This script needs to run as root"
    exit 1
fi

username_=wsgi
uid_=240
realname_="WSGI Daemon"

dscl . -create /Groups/_$username_
dscl . -create /Groups/_$username_ PrimaryGroupID $uid_
dscl . -create /Groups/_$username_ RecordName _$username_ $username_
dscl . -create /Groups/_$username_ RealName $realname_
dscl . -create /Groups/_$username_ Password \*

dscl . -create /Users/_$username_
dscl . -create /Users/_$username_ NFSHomeDirectory /xpt/local/apache2/wsgi/api
dscl . -create /Users/_$username_ Password \*
dscl . -create /Users/_$username_ PrimaryGroupID $uid_
dscl . -create /Users/_$username_ RealName $realname_
dscl . -create /Users/_$username_ RecordName _$username_ $username_
dscl . -create /Users/_$username_ UniqueID $uid_
dscl . -create /Users/_$username_ UserShell /usr/bin/false
dscl . -delete /Users/_$username_ PasswordPolicyOptions
dscl . -delete /Users/_$username_ AuthenticationAuthority

নোট করুন যে এই স্ক্রিপ্টটি চালানোর পরে / etc / passwd এবং / etc / গ্রুপ ফাইল আপডেট করা হয় না। আমি বিশ্বাস করি তারা পুনরায় বুটে আপডেট হয়েছে।


1
ধন্যবাদ ডেভ আমি আপনার মাভারিক্স আবিষ্কারগুলি ব্যবহার করতে এবং একটি alচ্ছিক আসল-নাম প্যারামিটার নিতে আমার স্ক্রিপ্ট (নীচে) আপডেট করেছি।
সমান

11

সম্পাদনা: ওএস এক্স মাভারিক্সের জন্য জানুয়ারী 9, 2014 আপডেট হয়েছে (ডেভের পরামর্শ, ধন্যবাদ!)

এটি করার জন্য আমি একটি বাশ স্ক্রিপ্ট লিখেছিলাম। এটি প্রথম অব্যবহৃত ইউআইডি ব্যবহার করবে যা 500 এর চেয়ে কম বা সমান (ম্যাক ওএস এক্সে ডেমন অ্যাকাউন্ট ইউডস) এতে অভিন্ন অব্যবহৃত জিডও রয়েছে।

নামে একটি ফাইলে স্ক্রিপ্ট সংরক্ষণ করুন add_system_user.shএবং এটি সেট দিয়ে এক্সিকিউটেবল chmod 755 add_system_user.sh

তারপরে বলা যাক আপনি একটি ডেমোন / সিস্টেম ব্যবহারকারী যা পেরে যোগ করতে চান । আপনি এই স্ক্রিপ্টটি এভাবে চালাতেন:

sudo add_system_user.sh par

এবং আপনি এমন একটি সিস্টেম ব্যবহারকারী পেয়ে যাবেন _parযা parনাম (যা আপনি অনুরোধ করেছিলেন) এর সাথে যুক্ত হয় এবং তার সাথে একটি ম্যাচিং ইউআইডি এবং জিড থাকে (যেমন 499 বা এটি যা পাওয়া যায়)।

লিপিটি এখানে:

#!/bin/bash

if (( $(id -u) )) ; then
    echo "This script needs to run as root"
    exit 1
fi

if [[ -z "$1" ]] ; then
    echo "Usage: $(basename $0) [username] [realname (optional)]"
    exit 1
fi

username=$1
realname="${2:-$username}"

echo "Adding daemon user $username with real name \"$realname\""

for (( uid = 500;; --uid )) ; do
    if ! id -u $uid &>/dev/null; then
        if ! dscl /Local/Default -ls Groups gid | grep -q [^0-9]$uid\$ ; then
          dscl /Local/Default -create Groups/_$username
          dscl /Local/Default -create Groups/_$username Password \*
          dscl /Local/Default -create Groups/_$username PrimaryGroupID $uid
          dscl /Local/Default -create Groups/_$username RealName "$realname"
          dscl /Local/Default -create Groups/_$username RecordName _$username $username

          dscl /Local/Default -create Users/_$username
          dscl /Local/Default -create Users/_$username NFSHomeDirectory /var/empty
          dscl /Local/Default -create Users/_$username Password \*
          dscl /Local/Default -create Users/_$username PrimaryGroupID $uid
          dscl /Local/Default -create Users/_$username RealName "$realname"
          dscl /Local/Default -create Users/_$username RecordName _$username $username
          dscl /Local/Default -create Users/_$username UniqueID $uid
          dscl /Local/Default -create Users/_$username UserShell /usr/bin/false

          dscl /Local/Default -delete /Users/_$username AuthenticationAuthority
          dscl /Local/Default -delete /Users/_$username PasswordPolicyOptions
          break
        fi
    fi
done

echo -e "Created system user $username (uid/gid $uid):\n"

dscl /Local/Default -read Users/_$username

echo -e "\nYou can undo the creation of this user by issuing the following commands:\n"
echo "sudo dscl /Local/Default -delete Users/_$username"
echo "sudo dscl /Local/Default -delete Groups/_$username"

এটি আমার জন্য খুব ভালভাবে কাজ করেছে 10.9। ধন্যবাদ!
jbyler

2

এখানে একটি নিবন্ধ এখানে ব্যাখ্যা করা হয়েছে যে কীভাবে একটি ব্যবহারকারী অ্যাকাউন্ট তৈরি করতে dscl ব্যবহার করবেন।

osxdaily.com নিবন্ধ


ধন্যবাদ। ম্যান পৃষ্ঠাগুলি আপনাকে জানায় যে আপনি কোন আদেশগুলি ব্যবহার করতে পারেন তবে কোন ক্ষেত্রগুলি ব্যবহার করবেন এবং সেগুলি কীভাবে সেট করবেন সে সম্পর্কে আপনাকে কোনও সহায়তা দেয় না। আমি কেবল অন্য অ্যাকাউন্ট থেকে কনফিগারটি অনুলিপি করতে যাচ্ছিলাম, তবে এটি একটি ভাল উদাহরণ দেয়।
টিম ইয়েটস

একটি লুকানো সিস্টেম অ্যাকাউন্টের জন্য, আরও ভাল উদাহরণগুলির জন্য বিদ্যমান কিছু সিস্টেম অ্যাকাউন্ট দেখুন। যেমন dscl /Local/Default -read /Users/_sshd ( dscl /Local/Default -ls /Usersআপনি স্থানীয় অ্যাকাউন্টগুলির একটি তালিকা পাবেন)। মনে রাখবেন যে আপনাকে সমস্ত বৈশিষ্ট্য নির্ধারণ করতে হবে না; জেনারেটেডিউড এলোমেলোভাবে উত্পন্ন হয় এবং রেকর্ডটাইপ স্বয়ংক্রিয় মেটাডেটা। এছাড়াও, বেশিরভাগ ওএস এক্স সিস্টেম অ্যাকাউন্টগুলির একটি প্রাথমিক অ্যাকাউন্টের নাম থাকে যা আন্ডারস্কোর দিয়ে শুরু হয়, এবং পশ্চাদপটে সামঞ্জস্যের জন্য এটি ছাড়া একটি উপন্যাস; আমি আন্ডারস্কোর কনভেনশনটি ব্যবহার করার পরামর্শ দিচ্ছি, তবে আপনার প্রয়োজন না হলে প্লেইন ওরফে বিরক্ত করবেন না।
গর্ডন ডেভিসন

2

এখানে ডেভের স্ক্রিপ্টের একটি সংস্করণ রয়েছে, যা ব্যবহারকারী / গোষ্ঠী তৈরি করার আগে উপস্থিত রয়েছে কিনা তাও পরীক্ষা করে:

#! / বিন / SH
# লিনাক্স অ্যাডুজার কমান্ডের অনুরূপ পরিষেবা অ্যাকাউন্ট ব্যবহারকারী তৈরি করে
# বিদ্যমান ব্যবহারকারী এবং আইডিগুলি দেখতে চেষ্টা করুন:
# ডিএসসিএল -রেডল / ব্যবহারকারীদের ইউনিকআইডি | বাছাই -nk 2

মারা () {
    প্রতিধ্বনি> & 2 "$ @"
    প্রস্থান 1
}

প্রতিধ্বনি "ব্যবহার: sudo $ 0 ব্যবহারকারীর নাম uid রিয়েল নেম"
প্রতিধ্বনি "নোটস: ব্যবহারকারীর নামটি আন্ডারস্কোর দিয়ে শুরু করা উচিত নয় (এটি স্ক্রিপ্ট দ্বারা সংযুক্ত করা হবে)"
প্রতিধ্বনি "পরীক্ষা করে নিন যে ব্যবহারকারীর অস্তিত্ব নেই এবং 1000 রেঞ্জের মধ্যে ফ্রি আইডি নম্বর পান"
প্রতিধ্বনি "উদাহরণস্বরূপ dscl। -readall / ব্যবহারকারীদের ইউনিকআইডি | সাজানো -nk 2"
প্রতিধ্বনি ""

# পরীক্ষা করুন যে আমরা সুপারভাইজার (যেমন $ (আইডি-ইউ) শূন্য)
[`id -u` -eq 0] || die "এই স্ক্রিপ্টটির মূল হিসাবে চালানো দরকার"

["$ #" -শক্তি 3] || die "ত্রুটি: 3 টি আর্গুমেন্ট প্রয়োজন: ব্যবহারকারীর নাম, uid এবং রিয়েল নাম"

ব্যবহারকারীর নাম: _ = $ 1
ইউআইডি: _ = $ 2
realname: _ = $ 3
nfs_homedir = "প্রথমেই / var / tmp,"
user_shell = "/ usr / bin / FALSE"

প্রতিধ্বনি "ব্যবহারকারী / গোষ্ঠী বিদ্যমান কিনা তা পরীক্ষা করা হচ্ছে: \ সি"

চেক_ইউইড = sc ডিএসসিএল। - অনুসন্ধান / ব্যবহারকারীদের ইউনিকআইডি id uid_` `
চেক_আপজিড = sc ডিএসসিএল। - অনুসন্ধান / ব্যবহারকারীদের প্রাথমিক গ্রুপ ID uid_` `
চেক_বার = sc ডিএসসিএল। - অনুসন্ধান / ব্যবহারকারীদের রেকর্ডনাম _ $ ব্যবহারকারীর নাম_` `
check_grn = sc dscl। - অনুসন্ধান / গোষ্ঠী রেকর্ডের নাম _ $ ব্যবহারকারীর নাম_` `


[$ {# চেক_ইউইড} = 0] || ডাই "ব্যর্থ! \ n নীতি: অ-অনন্য ব্যবহারকারী ইউনিকআইডি: \ n \ n`dscl। -পাঠন / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ রেকর্ডনাম প্রাথমিকগ্রুপআইডি রিয়েলনাম \ n \ n বিদ্যমান ব্যবহারকারী / আইডি চালানোর জন্য: dscl। -রেডল / ব্যবহারকারীদের ইউনিকআইডি | সাজানো-এনকে 2 "
[$ {# চেক_আপজিড} = 0] || ডাই "ব্যর্থ! \ nNERROR: অ-অনন্য ইউজার প্রাইমারী গ্রুপপিড \ n \ n`dscl। -ডাড / ইউজার / _ _ ইউজারনেম_ রেকর্ডনাম প্রাইমারিগ্রাড রিয়েলনাম` n \ n বিদ্যমান ব্যবহারকারী / আইডি চালানোর জন্য: ডিএসসিএল। -ড্রেডল / ব্যবহারকারীরা ইউনিকআইডি | সাজান -NK 2 "
[$ {# চেক_বার্ন} = 0] || ডাই "ব্যর্থ! \ nERROR: অ-অনন্য ব্যবহারকারী রেকর্ডনাম \ n \ n`dscl-n / $ ব্যবহারকারী নাম _ রেকর্ডনাম প্রাথমিকগ্রুপআইডি রিয়েলনাম` n \ n বিদ্যমান ব্যবহারকারী / আইডি চালানোর জন্য: dscl। -রেডল / ব্যবহারকারীদের ইউনিকআইডি | সাজান -NK 2 "
[$ {# চেক_গ্রিন} = 0] || ডাই "ব্যর্থ! \ nERROR: অদ্বিতীয় গ্রুপ রেকর্ডনাম \ n \ n`dscl। -ড্রেড / গোষ্ঠী / _ $ ব্যবহারকারীর নাম_ রেকর্ডনাম প্রাথমিকগ্রুপআইডি রিয়েলনাম` n existing n বিদ্যমান ব্যবহারকারী / আইডি চালানোর জন্য: dscl। -রেডল / ব্যবহারকারীদের ইউনিকআইডি | সাজান -NK 2 "

প্রতিধ্বনি "আমরা যেতে ভাল!"

# প্রতিধ্বনি "চালিয়ে যান (y / n)?"
# ইনপুট পড়ুন
# ["$ ইনপুট_" = "y"] || "আপনার ইচ্ছামতো ..."

প্রতিধ্বনি "ব্যবহারকারী তৈরি করা হচ্ছে: \ সি"

dscl। -সৃজন / গোষ্ঠী / _ $ ব্যবহারকারীর নাম_
dscl। -সৃজন / গোষ্ঠী / _ $ ব্যবহারকারীর নাম_ প্রাথমিকগ্রুপআইডি $ uid_
dscl। -Create / গোষ্ঠী / _ $ ব্যবহারকারীর নাম_ রেকর্ডনাম _ $ ব্যবহারকারীর নাম_ $ ব্যবহারকারীর নাম_
dscl। -সৃজন / গোষ্ঠী / _ $ ব্যবহারকারীর নাম_ রিয়েলনাম "$ রিয়েল নাম_"
dscl। -Create / গোষ্ঠী / _ $ ব্যবহারকারীর নাম_ পাসওয়ার্ড \ *

dscl। -Create / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_
dscl। -সৃজন / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ এনএফএসহোম ডিরেক্টরি $ nfs_homedir
dscl। -সৃজন / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ পাসওয়ার্ড \ *
dscl। -সৃজন / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ প্রাথমিকগ্রুপআইডি $ uid_
dscl। -Create / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ RealName "$ রিয়েল নাম_"
dscl। -Create / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ রেকর্ডনাম _ $ ব্যবহারকারী নাম_ $ ব্যবহারকারীর নাম_
dscl। -সৃজন / ব্যবহারকারী / _ $ ব্যবহারকারী নাম_ ইউনিকআইডি $ uid_
dscl। -সৃজন / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ ব্যবহারকারী_শেল $ ব্যবহারকারী_শেল
dscl। -সিলিট / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ পাসওয়ার্ডপলিসিঅ্যাপশন
dscl। -সিলিট / ব্যবহারকারী / _ $ ব্যবহারকারীর নাম_ প্রমাণীকরণের অনুমোদন

প্রতিধ্বনি "সম্পন্ন!"

এবং ব্যবহারকারীকে মুছতে একটি স্ক্রিপ্ট:

#! / বিন / SH
# লিনাক্স ইউজারডেল কমান্ডের অনুরূপ পরিষেবা ব্যবহারকারী মুছুন, তবে ফাইলগুলি অক্ষত রেখে দিন
# বিদ্যমান ব্যবহারকারী এবং আইডিগুলি দেখতে চেষ্টা করুন:
# ডিএসসিএল -রেডল / ব্যবহারকারীদের ইউনিকআইডি | বাছাই -nk 2

মারা () {
    প্রতিধ্বনি> & 2 "$ @"
    প্রস্থান 1
}

# পরীক্ষা করুন যে আমরা সুপারভাইজার (যেমন $ (আইডি-ইউ) শূন্য)
[`id -u` -eq 0] || die "এই স্ক্রিপ্টটির মূল হিসাবে চালানো দরকার"
["$ #" -ক 1 1] || die "ত্রুটি: ব্যবহারকারীর নাম আর্গুমেন্ট প্রয়োজন!"

ব্যবহারকারীর নাম: _ = $ 1

dscl। -সিলিট / ব্যবহারকারী / $ ব্যবহারকারীর নাম_
dscl। মুছে ফেলা / গোষ্ঠী / $ ব্যবহারকারীর নাম_

প্রতিধ্বনি "সম্পন্ন!"

আপনি একজন যাদুকর, অনেক অনেক ধন্যবাদ! ম্যাকোস 10.13 এ কাজ করে।
দিমিত্রি ভার্খোটুরভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.