होम डायरेक्टरी नहीं बनाई जा रही है


80

मैं उबंटू पर सिस्टम प्रशासन को समझने की कोशिश कर रहा हूं। इसलिए, एक उदाहरण के रूप में, मैं एक डमी उपयोगकर्ता का उपयोग करके बनाता हूं

sudo useradd -d /home/linda linda

और passwdपासवर्ड बनाने के लिए। मैं जाँचता हूँ कि एक प्रविष्टि का उपयोग करके बनाया गया हैcat /etc/passwd

linda:x:1004:1004::/home/linda:/bin/sh

हालांकि, जब मैं su - linda, मुझे मिलता है

No directory, logging in with HOME=/

और वास्तव में, कोई घर निर्देशिका नहीं बनाई गई है। मैं क्या खो रहा हूँ?

धन्यवाद।

जवाबों:


87

man useradd कहा गया है:

useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.

ध्यान दें low level utility

उपयोगकर्ता जोड़ने के लिए, adduserइसके बजाय का उपयोग करें । यह अधिक उच्च-स्तरीय उपयोगिता है।


इसके अलावा, -dविकल्प देख रहे हैं :

   -d, --home HOME_DIR
       The new user will be created using HOME_DIR as the value for the
       user's login directory. The default is to append the LOGIN name to
       BASE_DIR and use that as the login directory name. The directory
       HOME_DIR does not have to exist but will not be created if it is
       missing.

The directory will not be created if it is missing.

आम तौर पर इससे दूर रहें useradd, adduserइसके बजाय उपयोग करें ।


2
ओपी के बचाव में, जब मैंने "ऑन डेबियन" पढ़ा, तो मुझे लगा कि इसका मतलब डेबियन पर उबंटू डिस्ट्रोस के विपरीत है। मुझे पता है कि उबंटू डेबियन पर बनाया गया है, लेकिन यह सोचा कि एक भेद बनाया जा रहा है।
कीथ बेनेट

1
मैंने उपयोग किया adduserलेकिन अभी भी निर्मित होम डायरेक्टरी में केवल एक फ़ाइल है examples.desktopऔर कुछ नहीं है। मैं डिफ़ॉल्ट फ़ोल्डर डेस्कटॉप, डाउनलोड और इतने पर बनाने के लिए उबंटू कैसे प्राप्त कर सकता हूं? (मैं ssh के माध्यम से लॉग इन हूं)
mcExchange

हाय, खेद देर से प्रतिक्रिया और केवल अनुमान है, लेकिन मुझे लगता है कि उन फ़ोल्डरों को पहले जीयूआई लॉगिन पर स्वचालित रूप से बनाया जाता है। बस सोचा कि लोग अभी भी यहाँ उतर सकते हैं;)
derHugo

adduserनिर्देशिका नहीं बनायेगा यदि कोई व्यक्ति किसी भी प्रकार से CREATE_HOME /etc/login.defs में "नहीं" में बदल गया है। आप -mध्वज के साथ इसे ओवरराइड कर सकते हैं ।
नौमेनन

31

आप इसे केवल घर की डायर बनाकर ठीक कर सकते हैं।

mkdir /home/linda
chown linda:linda /home/linda

फिर से लॉग इन करने का प्रयास करें और यह काम करना चाहिए।


13

के अनुसार man useradd, -d /home/lindaविकल्प निर्देशिका नहीं बनाएगा /home/linda, अगर यह गायब है। तो, आपको इसे मैन्युअल रूप से बनाना होगा। ऐसा करने के लिए, टर्मिनल में फॉलोइंग कमांड चलाएँ:

sudo -i                            #to get root privileges
mkdir /home/linda                  #to create the directory /home/linda
cp -rT /etc/skel /home/linda         #to populate /home/linda with default files and folders
chown -R linda:linda /home/linda   #to change the owner of /home/linda to user linda

इसे भी देखें: अकाउंट बनाने के बाद यूजर होम फोल्डर कैसे बनायें?


7

/etc/defaults/useraddयदि आप चूक को बदलना चाहते हैं तो देखें । उपयोग:

useradd -m -d /home/joe -s /bin/bash


"मैन यूजरड के अनुसार, -d / होम / लिंडा विकल्प डायरेक्टरी / होम / लिंडा नहीं बनाएगा" इसलिए नहीं, यह कोई समाधान नहीं है।
एस्ट्रोजूनलू

Useradd मैन पेज के अनुसार, यह वही है जो झंडे के लिए है: -m, --create-home Create the user's home directory if it does not exist. The files and directories contained in the skeleton directory (which can be defined with the -k option) will be copied to the home directory. useradd will create the home directory unless CREATE_HOME in /etc/login.defs is set to no.@astrojuanlu
Myles

5

आप /etc/pam.d/common-sessionइसे बनाने के लिए संशोधित भी कर सकते हैं ताकि पहले लॉग इन पर एक उपयोगकर्ता की होम डायरेक्टरी बनाई जाएगी। उस फाइल में निम्नलिखित पंक्ति जोड़ें।

...
session required pam_mkhomedir.so

यह विशेष रूप से उपयोगी है यदि आपका सिस्टम एक नेटवर्क पर है जहां उपयोगकर्ता आपके मशीन पर बाहरी रूप से प्रबंधित होते हैं, उदाहरण के लिए LDAP द्वारा।


5

-mइसके बजाय का उपयोग करें -d, इसलिए निर्देशिका आपके लिए बनाई जाएगी:

sudo useradd -m linda

यदि lindaकोई सामान्य उपयोगकर्ता है, तो आप उसे /bin/bashडिफ़ॉल्ट के रूप में उपयोग करना चाहते हैं shell:

sudo useradd -m linda -s /bin/bash


3

नीचे दी गई प्रविष्टि जोड़ें /etc/login.defsऔर सहेजें:

CREATE_HOME yes

अब, उपयोगकर्ता खाते बनाने का प्रयास करें। यह होम डायरेक्टरी बनाएगा।


इसने मेरे लिए काम किया। मुझे एक मूल स्क्रिप्ट की आवश्यकता थी जो लिनक्स के विभिन्न स्वादों पर उपयोगकर्ताओं को दूरस्थ रूप से जोड़ / प्रबंधित करेगी। इस परिवर्तन के बाद मेरा कोड सभी सर्वरों पर समान परिणाम तैयार करता है। धन्यवाद।
sdkks

1

का उपयोग करें adduser

DESCRIPTION

 adduser  and  addgroup  add users and groups to the system according to
   command    line    options    and    configuration    information    in
   /etc/adduser.conf.   They  are  friendlier  front ends to the low level
   tools like useradd, groupadd and usermod programs, by default  choosing
   Debian  policy conformant UID and GID values, creating a home directory
   with skeletal configuration, running a custom script,  and  other  fea
   tures.  adduser and addgroup can be run in one of five modes:

useraddआपको स्वयं सभी विकल्प जोड़ने होंगे। जिसमें परमिशन और कुछ अन्य चीजें शामिल हैं। adduserयह समझदार चूक के आधार पर करता है (और अपने द्वारा घर की डायर को भी जोड़ता है)।

यदि आपको adduser का उपयोग करने की आवश्यकता है, तो संभवतः आपको -d विकल्प के साथ -b विकल्प की आवश्यकता है!


1

यदि /home/lindaआप उपयोगकर्ता के रूप में लिंडा को जोड़ने से पहले मौजूद नहीं हैं, तो आपको भी जोड़ना होगा --create-home

sudo useradd --create-home linda

1

सबसे अधिक संभावना कारण है कि आपके द्वारा बनाए होम निर्देशिका नहीं था, क्योंकि आप नहीं था है CREATE_HOME yesमें /etc/login.defs

आप इसे ठीक कर सकते हैं जो @OmPS या @Radu Rădeanu ने सुझाया था।

लेकिन नीचे दिए गए आदेशों का उपयोग करके भविष्य में इस समस्या को दूर करने के कई तरीके हैं:

  • के परिणाम sudo adduser linda

    Adding user 'linda'
    Adding new group 'linda' (1001) ...
    Adding new user 'linda' (1001) with group 'linda' ...
    Creating home directory '/home/linda' ...
    Copying files from '/etc/skel' ...
    ****Password confirmation****
    ****Name prompt****
    

    /etc/adduser.confयदि --homeविकल्प निर्दिष्ट नहीं है, तो एड्यूसर के लिए डिफॉल्ट को चुना जाता है। ध्यान दें कि यह /etc/skelसामग्री को भी कॉपी करता है ।

  • के साथ नशेड़ी का उपयोग करें --home

    sudo adduser --home /home/linda

पिछले विकल्प के समान ही आप इसे छोड़ सकते हैं यदि उपयोगकर्ता होम निर्देशिका आपके द्वारा असाइन किए गए उपयोगकर्ता नाम से भिन्न है।

  • useraddआदेश के लिए आधार निर्देशिका निर्दिष्ट करें :

    sudo useradd -b /home
  • Login.defs का उपयोग करें: /etc/login.defsकरने से पहले नीचे की पंक्ति को संशोधित करें और जोड़ें sudo useradd:

    CREATE_HOME   yes

नोट: यदि आप करते हैं man login.defs, तो यह वर्तमान में कहता है

छाया पासवर्ड सूट द्वारा प्रदान की जाने वाली अधिकांश कार्यक्षमता अब PAM द्वारा नियंत्रित की जाती है। इस प्रकार, /etc/login.defs अब पासवार्ड (1), या कम लॉगिन (1) और su (1) द्वारा उपयोग नहीं किया जाता है। कृपया इसके बजाय संबंधित PAM कॉन्फ़िगरेशन फ़ाइलों को देखें।

  • Pam_mkhomedir PAM मॉड्यूल का उपयोग करें: man pam_mkhomedirपृष्ठ से, नीचे की पंक्ति जोड़ें /etc/pam.d/login:

    session  required  pam_mkhomedir.so skel=/etc/skel
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.