बैश स्क्रिप्ट के माध्यम से उपयोगकर्ता खाता जोड़ने का उचित तरीका


15

अब मैं जो स्क्रिप्ट कोड उपयोग कर रहा हूं:

getent group $MYGROUP
if [ $? -ne 0 ] ; then
    sudo su -c "groupadd $MYGROUP"
fi
sudo su -c "useradd mynewuser -p mypassword -m -g $PRIMARYGRP -G $MYGROUP"

यह दृष्टिकोण ओपनयूज पर अच्छी तरह से काम करता है। लेकिन उबंटू को बनाने वाले उपयोगकर्ता खाते के साथ कई समस्याएं हैं इसलिए मैं यहां मदद मांग रहा हूं।

  • टर्मिनल प्रॉम्प्ट सेट नहीं है ( echo $PS1कुछ भी नहीं लौटाता है)
  • तीर कुंजी और टैब कुंजी टर्मिनल में सही ढंग से काम नहीं करती है
  • पासवर्ड काम नहीं करता है (हालांकि मैं अभी भी स्पष्ट नहीं हूं कि यह मुद्दा क्या है)
  • इस नए उपयोगकर्ता के लिए / etc / sudoers अधिकारों को सम्मानित नहीं किया गया है

अगर इसके बजाय मैं मैन्युअल रूप से adduser(useradd के बजाय) उपयोगकर्ता बनाता हूं तो मुझे Ubuntu पर ये समस्याएं नहीं हैं। लेकिन मैं उपयोग नहीं कर सकताadduser ओपनस्यूज़ (afaik) पर । इसलिए, मुझे अपनी बैश स्क्रिप्ट के माध्यम से उपयोगकर्ता खातों को जोड़ने की एक गैर-डेबियन-अनन्य स्क्रिप्ट या विधि की आवश्यकता है जो उबंटू पर काम करती है (और अन्य डिस्ट्रोस पर काम करना बंद नहीं करती है)।

अंत में, मैं और के बीच के अंतरों को समझना चाहूंगा । उदाहरण के लिए, मैं यह जानना चाहता हूं कि कौन से कंकाल निर्देशिका द्वारा उपयोग किया जाता है क्योंकि इसका कारण यह हो सकता है कि उम्मीद के मुताबिक काम नहीं कर रहा है (क्योंकि मैंने केवल डिफ़ॉल्ट को स्वीकार किया है)।adduseruseraddadduseruseradd

धन्यवाद


1
अंतर के रूप में: useradd मैन पेज से ( man useradd): useradd उपयोगकर्ताओं को जोड़ने के लिए एक निम्न स्तर की उपयोगिता है। डेबियन पर, प्रशासकों को आमतौर पर इसके बजाय एड्यूसर (8) का उपयोग करना चाहिए।
गुंटबर्ट १३:१३

के sudo su -c "cmd arg1 arg2"बराबर भी है sudo cmd arg1 arg2
enzotib

@enzotib धन्यवाद यह जानने के लिए अच्छा है कि वे उबंटू पर बराबर हैं क्योंकि वे ओपनस्यूज पर नहीं हैं। इसलिए, मैं sudo su -c "cmd arg1 arg2"इसका उपयोग करता रहूंगा ताकि यह हर जगह काम करे मुझे इसे काम करने की आवश्यकता है।
माउंटेनएक्स

adduserएक पर्ल स्क्रिप्ट है जो 1000 से अधिक लाइनों की है, इसलिए अंतर के लिए आप स्क्रिप्ट पर एक नज़र डाल सकते हैं।
enzotib

@enzotib हाँ, मैं पढ़ adduserरहा हूँ, लेकिन मुझे पता नहीं है। इसलिए यह मेरे लिए अच्छा तरीका नहीं है।
माउंटेनएक्स

जवाबों:


14

: मेरे यहाँ समाधान प्रदान किया गया /unix/82923/proper-way-to-add-a-user-account-via-bash-script द्वारा उलरिच श्वार्ज और जोसेफ आर । मुझे जो मुख्य काम करना था वह -s /bin/bashमेरे मौजूदा useraddकमांड में जोड़ दिया गया और हटा दिया गया -p passwordजो एक एन्क्रिप्टेड पासवर्ड की अपेक्षा करता है।

sudo su -c "useradd mynewuser -s /bin/bash -m -g $PRIMARYGRP -G $MYGROUP"

फिर ऐसा करें:

sudo chpasswd << 'END'
mynewuser:password
END

6
echo mynewuser:password | sudo chpasswdकाम भी करता है।
फेलिक्स राबे

10

यह काम करेगा।

sudo adduser myuser --gecos "First Last,RoomNumber,WorkPhone,HomePhone" --disabled-password
echo "myuser:password" | sudo chpasswd

यह स्वीकृत उत्तर की तुलना में आसान समाधान है।
स्टीवन

2

मेरी स्क्रिप्ट जो ssh कुंजी लॉगिन और कोई पासवर्ड के साथ स्वचालित रूप से एक सेवा खाता बनाती है

#add service group/user
addgroup service-runner
useradd devops-service --create-home --shell /bin/bash --groups service-runner
#gpasswd -a devops-service sudo #allowing sudo requires password, and not a good idea for a service account.
mkdir /home/devops-service/.ssh
chmod 700 /home/devops-service/.ssh
cat devops-service@v2-20150312.pub >> /home/devops-service/.ssh/authorized_keys
chown devops-service:devops-service /home/devops-service -R

fyi, मेरी स्क्रिप्ट का उपयोग करने के बाद, मैं देखता हूं कि "sudo" सेवा खाते के साथ बहुत बेकार है, क्योंकि कोई भी पासवर्ड का अर्थ यह नहीं है कि वह sudo का उपयोग नहीं कर सकता है। आप इसे बिना किसी पासवर्ड के सूडो विदो के माध्यम से अनुमति देने के लिए कॉन्फ़िगर कर सकते हैं लेकिन मुझे नहीं पता कि इसे स्क्रिप्ट में कैसे स्वचालित किया जाए। इसके अलावा, संभवत: नो-पासवर्ड वाले सूडो वाला एक सेवा खाता एक अच्छा (सुरक्षा) विचार नहीं है।
जेसन

0

मुझे लगता है कि आप अपनी स्क्रिप्ट में एक शर्त का उपयोग कर सकते हैं, जैसे कुछ

if grep -q 'Ubuntu\|Debian' /etc/issue; then
    adduser .....
else
    useradd .....
fi

(यदि फ़ाइल /etc/issueOpenSUSE पर मौजूद है , तो सत्यापित नहीं कर सकते, अन्यथा आप ऐसी फ़ाइल के अस्तित्व पर शर्त रख सकते हैं)।


क्यों नहीं बस के adduserसाथ if command -v adduser >/dev/null; thenया पसंद के अस्तित्व का परीक्षण ? यह केवल एक चीज है जो मायने रखता है और अंतर्निहित वितरण नहीं। इसके अलावा, डेबियन / उबंटू और ओपनएसयूएसई के अलावा अन्य वितरण भी हैं।
डेविड फ़ॉस्टर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.