टर्मिनल में मौजूदा उपयोगकर्ता के लिए डिफ़ॉल्ट होम निर्देशिका बनाएं


150

मैं यह कैसे करु? मैंने एक घरेलू निर्देशिका के बिना एक उपयोगकर्ता बनाया और अब मैं एक बनाना चाहता हूं। न सिर्फ new_user नामक एक फ़ोल्डर, मैं चाहता हूँ कि डिफ़ॉल्ट घर निर्देशिका सभी के साथ यह फ़ोल्डर और छिपी हुई फ़ाइलें, आदि।


जब उपयोगकर्ता लॉग इन करता है, तो वे उपनिर्देशिकाएं (दस्तावेज़, डाउनलोड, आदि ...) स्वचालित रूप से बनाई जाएंगी। हालांकि मैं टर्मिनल के माध्यम से अपने लॉगिन को "अनुकरण" करने के तरीके खोज रहा हूं।
अला अली

@ इला su new_user: डी
रादु रयाडेनु

1
@ RaduRădeanu हाँ, मैंने पहले ही कोशिश की थी, कोशिश भी की sudo -i -u new_userलेकिन यह काम नहीं करता है। मुझे लगता है कि हमें "एक एक्स लॉगिन का अनुकरण" करने की आवश्यकता है ... यह नहीं पता कि यह कैसे करना है।
अला अली

2
लॉगिंग घर में उपनिर्देशिका नहीं बनाता है।
जो रिजो

जवाबों:


230

निम्नलिखित का उपयोग करें (जड़ के रूप में, या सूडो के साथ यदि जड़ नहीं):

mkhomedir_helper username

यह काम करने के लिए, फ़ोल्डर /home/usernameमौजूद नहीं होना चाहिए।

एक्स-संबंधित फ़ोल्डर्स (डेस्कटॉप, डाउनलोड, आदि) के लिए, आपको ग्राफिक्स वातावरण में लॉगिन करना होगा; जब आप पहली बार लॉगिन करेंगे तो वे स्वतः उत्पन्न हो जाएंगे।


1
सरल और उपयोगी। इस तरह आप यह भी सुनिश्चित कर सकते हैं कि नव निर्मित होम डायर आपकी सिस्टम नीतियों के अनुरूप है, बिना उन्हें जाने या किसी भी मैनुअल रिंकिंग के।
gerlos

यह सही उत्तर है, कम से कम इसने मेरे लिए Ubuntu 14.04.2 LTS पर काम किया।
क्रिश्चियन विल्की

1
मेरे लिए काम करने से पहले मुझे अपना यूजरनेम / etc / passwd करना होगा।
user79878

3
सरल .. बस काम करता है (tm)। स्वीकृत उत्तर होना चाहिए
न्यूटोपियन

निर्देशिका की अनुमतियों की जांच करना न भूलें ls -l /home। मैंने पाया कि नई निर्देशिका अन्य सभी उपयोगकर्ताओं द्वारा पढ़ने योग्य थी, इसलिए मैंने उन अनुमतियों को हटा दिया chmod go-r-x /home/username
डॉन किर्कबी

33

उपनिर्देशिका (दस्तावेज़, डाउनलोड, आदि ...) स्वचालित रूप से बनाई जाती हैं जब उपयोगकर्ता GNOME से पहली बार लॉग इन करता है, बशर्ते कि घर की निर्देशिका सही अनुमतियों के साथ बनाई गई हो। यहाँ एक प्रदर्शन है:

alaa @ aa-lu: ~ $ sudo useradd टेस्टिंगूसर
 alaa @ aa-lu: ~ $ sudo passwd टेस्टिंगूसर
नया UNIX पासवर्ड डालें:
नया UNIX पासवर्ड लिखें:
पासवार्ड: पासवर्ड सफलतापूर्वक अपडेट किया गया
alaa @ aa-lu: ~ $ sudo ls -l / home
कुल 20
drwxr-xr-x 55 alaa alaa 4096 अगस्त 22 22:00 alaa
drwx ------ 2 रूट रूट 16384 जून 5 09:46 खोया + पाया
alaa @ aa-lu: ~ $ sudo mkdir / home / टेस्टिंगुसर
 alaa @ aa-lu: ~ $ sudo chown टेस्टिंगूसर: टेस्टिंगूसर / होम / टेस्टिंगूसर
 alaa @ aa-lu, ~ $ ls -l / home
कुल 24
drwxr-xr-x 55 alaa alaa 4096 अगस्त 22 22:00 alaa
drwx ------ 2 रूट रूट 16384 जून 5 09:46 खोया + पाया
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:03 टेस्टिंग्यूसर
alaa @ आ-लू: ~ $ ls -l / home / testuser /
कुल ०
अला @ आ-लू: ~ $

आप देख सकते हैं कि उपयोगकर्ता की होम डायरेक्टरी सही तरीके से प्रविष्टि की जाँच करके निर्धारित की गई है /etc/passwd। आपको डिफ़ॉल्ट रूप से, होम निर्देशिका को /home/testinguserनिम्न पर सेट करना चाहिए :

alaa @ aa-lu: ~ $ grep testuser / etc / passwd
टेस्टिंग्यूसर: x: 1001: 1001 :: / होम / टेस्टिंग्यूसर : / बिन / श

यदि आपको /home/testinguserवहां होम डायरेक्टरी दिखाई नहीं देती है , तो आपको sudo usermod -d /home/testinguser testinguserइसे अपडेट करने के लिए कमांड निष्पादित करने की आवश्यकता होगी , हालाँकि आपको इस कमांड का उपयोग करने की आवश्यकता नहीं होनी चाहिए क्योंकि यह डिफ़ॉल्ट रूप से सेट होना चाहिए ( useradd's manpages के अनुसार )।

मैंने तब अपने खाते से लॉग आउट किया, और वापस लॉग इन किया testinguser, और यहाँ स्वतः उपनिर्देशिकाएँ बनाई गई हैं:

alaa @ आ-लू: ~ $ ls -l / home / testuser /
कुल 36
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:05 डेस्कटॉप
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:05 दस्तावेज
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:05 डाउनलोड
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:05 संगीत
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:07 चित्र
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:05 सार्वजनिक
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:05 टेम्प्लेट
drwxr-xr-x 2 टेस्टिंग्यूसर टेस्टिंगूसर 4096 अगस्त 23 10:05 वीडियो

मुझे इसकी सामग्री की प्रतिलिपि बनाने की आवश्यकता नहीं थी /etc/skel

यदि संभव हो, तो क्या आप इन चरणों का पालन करके, एक और नया उपयोगकर्ता बना सकते हैं? एक बार काम पूरा हो जाने के बाद, आप इस नए उपयोगकर्ता को हटा सकते हैं sudo deluser testinguser && sudo rm -r /home/testinguser

अगर यह सब आपके साथ काम नहीं करता है, तो मैं अनुमान लगा रहा हूं कि यह एक बग है।


किसी स्थिति में जब आप उपयोग करते हैं useradd, तो नए उपयोगकर्ता के लिए डिफ़ॉल्ट होम निर्देशिका स्वचालित सेट नहीं होती है /home/username। तो, पहले ypu उस बारे में निश्चित होना चाहिए।
राडू रियडेनू

क्या आप मुझे इन स्थितियों का उदाहरण दे सकते हैं =)? के मैन पेज से useradd: " उपयोगकर्ता चर गृह निर्देशिका द्वारा निर्दिष्ट आधार निर्देशिका का उपयोग करेगा /etc/default/useradd, या /homeडिफ़ॉल्ट रूप से"। होम चर को /etc/default/useraddडिफ़ॉल्ट रूप से परिभाषित नहीं किया गया है, इसलिए उपयोगकर्ता हमेशा उपयोग करेगा /home। वैसे भी, मैं अपना उत्तर संपादित करूंगा और भाग को देखूंगा /etc/passwd
अला अली

यहाँ एक उदाहरण है । एक अन्य उदाहरण: आप एक उपयोगकर्ता को हटाते हैं, लेकिन आपने उसकी निर्देशिकाओं और फ़ाइलों को नहीं हटाया; और फिर आप उसी नाम के साथ फिर से एक उपयोगकर्ता जोड़ते हैं। और कई हैं, और कोई कीड़े नहीं हैं :)
राडू रियडेनू

यदि आपके पास /bin/shउस उपयोगकर्ता पंक्ति में नहीं है, तो /etc/passwdआपको उस उपयोगकर्ता के लिए एक शेल जोड़ना होगा, उदाहरण के लिए डिफ़ॉल्ट खोल के साथusermod -s /bin/sh testuser
rubo77

सभी प्रणालियों में गनोम नहीं है और किसी को केवल एक होम डायरेक्टरी बनाने के लिए उपयोगकर्ता को हटाने और फिर से जोड़ने का सुझाव देना बुरी सलाह है।
ntwrkguru

12

अद्यतन: समाधान टूट गया है और मेरे लिए भी काम नहीं कर रहा है।

यदि आप उपयोगकर्ता की होम डायरेक्टरी बनाना चाहते हैं यदि यह मौजूद नहीं है, तो ध्वज के useraddसाथ कमांड चलाएं -m। यह /etc/skelनिर्देशिका से सभी फ़ाइलों को कॉपी करेगा ।

useradd -m username

आपको अपने सिस्टम के लिए सेटिंग्स कॉन्फ़िगर करने की आवश्यकता हो सकती है। मैन पेज के अनुसार:

  -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.

    By default, if this option is not specified and CREATE_HOME is not enabled, no
    home directories are created.

और आगे इंगित करता है:

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.

8
ऐसा लगता है कि एक नया उपयोगकर्ता बनाने की कोशिश की जा रही है, क्योंकि यह मुझे बताता है "उपयोगकर्ता 'नया-उपयोगकर्ता' पहले से मौजूद है"।
जो रिजो

मैंने -mनए उपयोगकर्ता वैसे भी बनाते समय ध्वज का परीक्षण किया है , और यह काम नहीं किया; यह केवल कंकाल की फ़ाइलों की प्रतिलिपि बनाता है।
अला अली

@Jo: और यह कैसे गलत है, क्योंकि प्रारंभिक पोस्ट के अनुसार, उपयोगकर्ता पहले से मौजूद है।
crafter

3
इस उत्तर से समस्या हल नहीं होती है। कॉपी /etc/skelकरने से होम निर्देशिका में उपनिर्देशिकाएँ नहीं बनती हैं। साथ ही, useradd -mनया उपयोगकर्ता बनाते समय उपयोग किया जाता है, न कि तब जब उपयोगकर्ता पहले से ही जोड़ा जाता है।
आल्हा अली

मैंने पोस्ट अपडेट कर दी है, इसलिए login.defs config फाइल में हां में CREATE_HOME सेट करें।
crafter

5

यदि आपने नया उपयोगकर्ता adduserकमांड के साथ बनाया है , तो आपको नए उपयोगकर्ता के लिए होम डायरेक्टरी बनाने की आवश्यकता नहीं है। /homeनिम्न उपनिर्देशिकाओं के साथ निर्देशिका में उपयोगकर्ता के नाम के साथ एक होम निर्देशिका , डेस्कटॉप, डाउनलोड, दस्तावेज़, संगीत, चित्र, वीडियो (और अन्य), नए उपयोगकर्ता के लिए स्वचालित बनाया जाएगा।

यदि आपने नया उपयोगकर्ता useraddकमांड के साथ बनाया है , तो टर्मिनल में निम्नलिखित कमांड चलाएं:

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

/etc/passwdफ़ाइल को रूट के रूप में संपादित करने के लिए (यह सबसे महत्वपूर्ण कदम है)। नए उपयोगकर्ता के नाम के साथ लाइन ढूंढें और उसके लिए डिफ़ॉल्ट होम डायरेक्टरी को कुछ इस तरह सेट करें:

new_username:x:1001:1001::/home/new_username:/bin/sh

इस पंक्ति में आप नए उपयोगकर्ता के लिए एक वास्तविक नाम भी जोड़ सकते हैं, या डिफ़ॉल्ट शेल सेट कर सकते हैं। कुछ इस तरह:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

सावधान रहें, कोई अन्य परिवर्तन न करें।

फ़ाइल को सहेजने के बाद, रूट खाते से बाहर जाने से पहले, निम्न कमांड चलाएँ:

mkdir /home/new_username                                #to create the directory /home/new_username
cp -r /etc/skel/. /home/new_username                    #to copy skeleton files to /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

इन सभी के बाद नए उपयोगकर्ता के लिए होम फ़ोल्डर पहले लॉगिन के बाद स्वचालित रूप से आबाद हो जाएगा।

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


जहां तक ​​मुझे याद है, होम फोल्डर स्वचालित रूप से नहीं बना है, आपको इसे मैन्युअल रूप से बनाना होगा और उपयोगकर्ता की प्रविष्टि को अपडेट करना होगा /etc/passwd(यदि यह पहले से नहीं है)। उपयोगकर्ता के लॉग इन करते ही, होम फ़ोल्डर स्वचालित रूप से उन उपनिर्देशिकाओं के साथ आबाद हो जाएगा। हालाँकि, इस बात का ध्यान रखा जाता है कि कोई व्यक्ति adduserइसके बजाय किसी उपयोगकर्ता का उपयोग कर रहा है useradd
अला अली

@Alaa मैं बस कुछ दिन पहले परीक्षण किया है और मैं प्रयोग किया जाता है adduser: घर फ़ोल्डर है स्वचालित रूप से बनाया। और वास्तव में, पहले लॉगिन के बाद होम फोल्डर अपने आप पॉपुलेट हो जाएगा।
रादु रदिअनु

ऐसा लगता है कि मैं कुछ भी नहीं कर सकता हूं। फिर भी मैं दूसरे प्रश्न से बैश स्क्रिप्ट की कोशिश करूंगा, लेकिन क्या मैं सिर्फ / home / new_user नामक एक फ़ोल्डर नहीं बना सकता हूं, और फिर / etc / skel की सामग्री को कॉपी कर सकता हूं? क्या वह बैश-स्क्रिप्ट है?
जो रिजो

@JoRijo मैंने अपना उत्तर संपादित किया।
रादु राईडेनु

@ RaduRădeanu क्या आपका मतलब नहीं है cp /etc/skel/* /home/new_username? इसके अलावा, क्या कोई कारण है कि आप लगातार दो chownआदेशों का उपयोग करते हैं ?
अलाअ अली

3

यह काम करने के लिए आपको बस घर फ़ोल्डर की आवश्यकता है। जड़ के रूप में,

cd /home
cd mkdir username
chown username username
chgrp username username

पहली बार के साथ लॉग इन करके सभी आवश्यक फाइलें बनानी चाहिए, ऐसा लगता है:

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.