उपयोगकर्ता की डिफ़ॉल्ट होम निर्देशिका को बदलने की आज्ञा


202

मैं यह जानना चाहूंगा कि क्या लिनक्स / यूनिक्स में उपयोगकर्ता के होम डायरेक्टरी को बदलने के लिए कोई सरल शेल कमांड है ( जो कि एक chsh के समान है जो किसी मौजूदा वैध उपयोगकर्ता के डिफ़ॉल्ट लॉगिन शेल को बदल देता है) /etc/passwdफ़ाइल को छूने के बिना । धन्यवाद


आप /etc/passwdफ़ाइल को क्यों नहीं छूना चाहते ? आप की आवश्यकता होगी!
बेसिल स्टारीनेविच

11
stackoverflow.com/questions/20071714/… , का कहना है कि usermod -d /home/userxx /home/useryylinux default login directory को / home / useryy में बदलने के लिए
Ibrahim Quraish

2
आप डिफ़ॉल्ट होम निर्देशिका के बारे में क्यों पूछते हैं ? क्या आप किसी विशेष मौजूदा उपयोगकर्ता या भविष्य में जोड़े गए सभी उपयोगकर्ताओं की होम निर्देशिका को बदलना चाहते हैं? ध्यान दें कि डिफ़ॉल्ट लॉगिन शेल chshनहीं बदलता है , लेकिन किसी दिए गए उपयोगकर्ता का लॉगिन शेल ... किसी विशेष उपयोगकर्ता को बदलने के लिए , बस संपादित करेंHOME/etc/passwd
बेसिल स्टायरेंविच

जवाबों:


350

अन्य उत्तर पर इब्राहिम की टिप्पणी किसी मौजूदा उपयोगकर्ता के घर निर्देशिका को बदलने का सही तरीका है।

उपयोगकर्ता की होम निर्देशिका बदलें:

usermod -d /newhome/username username

usermodमौजूदा उपयोगकर्ता को संपादित करने के लिए कमांड है।
-d(संक्षिप्त नाम --home) उपयोगकर्ता की होम निर्देशिका को बदल देगा।

उपयोगकर्ता की होम निर्देशिका को बदलें + उपयोगकर्ता की वर्तमान निर्देशिका की सामग्री को स्थानांतरित करें:

usermod -m -d /newhome/username username

-m(संक्षिप्त नाम --move-home) उपयोगकर्ता की वर्तमान निर्देशिका से सामग्री को नई निर्देशिका में ले जाएगा।


1
न केवल सामग्री को स्थानांतरित करें, मैं इसे अधिक पसंद करता हूं जैसे कि संपूर्ण फ़ोल्डर = मूल फ़ोल्डर ( /home/usernameआमतौर पर) हटा दिया जाता है।
बेटलिस्टा जूल

2
@STW क्या यह एक प्रतिवर्ती कार्य है? मतलब अगर मैं इसे सिर्फ एक बार चलाता हूं और फिर मापदंडों को पलटाता हूं, तो क्या मेरे घर की निर्देशिका ठीक उसी तरह होगी जैसे पहले थी?
डेनगार्डन

1
@DanGordon जो भी आप /newhome/usernameतर्क में रखते हैं वह उपयोगकर्ता की होम डायरेक्टरी होगी। यदि आप जानते हैं कि यह क्या था, तो आप इसे अपनी पिछली होम निर्देशिका में वापस सेट कर सकते हैं, लेकिन कोई "पूर्ववत" विकल्प नहीं है।
STW

3
दूसरी कमांड के लिए विकल्पों का क्रम गलत है। usermod -m -d /newhome/username usernameकाम करता है।
स्नोज़्ज़लेबर्ट

@Dominik धन्यवाद - इस बात की संभावना है कि यह अलग ओएस (मैक लिनक्स बनाम बीएसडी बनाम, आदि) के आधार पर है, निश्चित रूप से यह भी सिर्फ गलत हो सकता है
STW

28

लिनक्स से डिफॉल्ट यूजर होम डायरेक्ट्री जबकि एक नया उपयोगकर्ता जोड़ रहा है :

बस टेक्स्ट एडिटर का उपयोग करके इस फाइल को खोलें:

vi /etc/default/useradd

होम वैरिएबल द्वारा परिभाषित डिफ़ॉल्ट होम डायरेक्टरी, निम्नानुसार पढ़ने वाली रेखा खोजें:

HOME=/home

से बदलो:

HOME=/iscsi/user

फ़ाइल को सहेजें और बंद करें। अब आप नियमित useradd कमांड का उपयोग करके उपयोगकर्ता को जोड़ सकते हैं:

# useradd vivek
# passwd vivek

उपयोगकर्ता जानकारी सत्यापित करें:

# finger vivek

82
usermod -m -d /path/to/new/login/home/dir user मौजूदा उपयोगकर्ता होम निर्देशिका को एक नई लॉगिन निर्देशिका में बदल देता है जो अगर पहले से मौजूद नहीं है, तो विकल्प -m वर्तमान होम निर्देशिका की सामग्री को नए होम डायर में स्थानांतरित करता है
इब्राहिम कुरैश

23

स्वीकृत उत्तर दोषपूर्ण है, क्योंकि प्रारंभिक उपयोगकर्ता फ़ोल्डर से सामग्री का उपयोग नहीं किया गया है। मैं इसे सही करने के लिए एक और उत्तर जोड़ने जा रहा हूं:

sudo usermod -d /newhome/username -m username

आपको उपयोगकर्ता नाम के साथ फ़ोल्डर बनाने की आवश्यकता नहीं है और यह आपकी फ़ाइलों को प्रारंभिक उपयोगकर्ता फ़ोल्डर से / newhome / उपयोगकर्ता नाम फ़ोल्डर में भी ले जाएगा।


4

मामले में अन्य पाठक adduserकमांड पर जानकारी की तलाश करते हैं ।

संपादित करें /etc/adduser.conf

DHOMEचर सेट करें


0

पता चला कि यह कुछ अनुप्रयोगों को तोड़ता है, इसे करने का बेहतर तरीका है

सिम्लिंक के अलावा, अधिक हाल के डिस्ट्रोस और फाइल सिस्टम पर, रूट के रूप में आप बाइंड-माउंट का भी उपयोग कर सकते हैं:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

यह डेमॉन के माध्यम से उप-घर / "निर्देशिका को" के माध्यम से "अनुमति देने" के लिए उपयोगी है जो अन्यथा सहानुभूति (Apache, ftpd, आदि) के माध्यम से रास्ते से बचने के लिए कॉन्फ़िगर किया गया है।

आपको याद रखना होगा (या स्क्रिप्ट को पुनः आरंभ करने के लिए), निश्चित रूप से याद करने के लिए।

एक उदाहरण init स्क्रिप्ट /etc/fstabहै

/extra-home/username /home/username none defaults,bind 0 0

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