जिस मूल्य के लिए उपयोग किया जाता है, ~
वह उस मूल्य से निर्धारित होता है जो आपको प्रशासनिक डेटाबेस से प्राप्त होता है ( getent passwd
), आमतौर पर /etc/passwd
फ़ाइल में, प्रत्येक उपयोगकर्ता के घर निर्देशिका के लिए निर्धारित किया जाता है।
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
sam:x:500:500:Sam Mingolelli:/home/sam:/bin/bash
tracy:x:501:501::/home/tracy:/bin/bash
इस फ़ाइल में 6 वाँ कॉलम वह है जहाँ किसी प्रकार से cd ~
आने वाले मूल्य का उपयोग किया जाता है।
nsswitch
आप देख सकते हैं कि कमांड का उपयोग करके उपयोगकर्ता के होम डायरेक्टरी के लिए एक सिस्टम क्या उपयोग करेगा getent passwd
:
$ getent passwd
root:x:0:0:root:/root:/bin/bash
sam:x:500:500:Sam Mingolelli:/home/sam:/bin/bash
tracy:x:501:501::/home/tracy:/bin/bash
"डेटाबेस" जो इन्हें प्रदान करता है, आपके सिस्टम रिज़ॉल्वर के माध्यम से नियंत्रित होता है, जिसमें परिभाषित किया गया है /etc/nsswitch.conf
।
$ grep passwd /etc/nsswitch.conf
#passwd: db files nisplus nis
passwd: files
उपर्युक्त फाइलें मतलब है /etc/passwd
, लेकिन "डेटाबेस" उदाहरण के लिए, LDAP, NIS या नेटवर्क के अन्य स्थानों से आ सकता है।
आगे बढ़ते / पुनर्परिभाषित?
इस ऑपरेशन को करने के लिए खातों के निर्माण के बाद थोड़ा मुश्किल है। यदि आप स्क्रैच से खाते बना रहे हैं, तो उपयोगकर्ता के अपने होम डायरेक्टरी के स्थान को फिर से परिभाषित करना तुच्छ है। useradd
कमांड चलाते समय आप उपयोगकर्ता के घर निर्देशिका के लिए उपयोग किए जाने वाले स्थान को निर्दिष्ट कर सकते हैं।
उदाहरण
$ useradd -d /ext1/acheong ...
मैन पेज से अंश
-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.
मौजूदा खातों के लिए?
यह सर्जिकल ऑपरेशन से अधिक हो जाता है क्योंकि अक्सर उपयोगकर्ता की होम डायरेक्टरी के पथ को कॉन्फ़िगरेशन फ़ाइलों में सांख्यिकीय रूप से शामिल किया जाता है, जिससे यह पेचीदा हो जाता है।
उदाहरण
$ grep home /home/sam/.*
/home/sam/.gtkrc-1.2-gnome2:include "/home/sam/.gtkrc.mine"
ये या तो, तय करने की आवश्यकता होगी या आप से एक लिंक प्रदान करना होगा /home/sam
, नए स्थान पर /ext1/sam
।
जब "डेटाबेस" नहीं चल रहा है /etc/passwd
अगर सिस्टम को LDAP, NIS इत्यादि से होम डाइरेक्टरी मिल रही है, तो आपको उन सिस्टम में रिलोकेशन को पर्फॉर्म करने की आवश्यकता होगी, और फाइलों को अंदर जाने के साथ समन्वयित /home/sam
करना होगा /ext1/sam
।
संदर्भ
~
वास्तविक घर निर्देशिका के अलावा कुछ और करने के लिए खोल का विस्तार करते हैं?