मैं लिनक्स पर NFS4 से थोड़ा परेशान हूं। कुछ जानकारी 'वहाँ से बाहर' अन्य जानकारी के साथ संघर्ष करने लगती है, और अन्य जानकारी खोजने में कठिन प्रतीत होती है। तो यहाँ कुछ चीजें हैं जिन्होंने मेरा ध्यान आकर्षित किया, उम्मीद है कि कोई व्यक्ति इस पर कुछ प्रकाश डाल सकता है।
यह प्रश्न विशेष रूप से NFS4 पर केर्बरोस आदि के बिना केंद्रित है।
1. निर्यात
exports
/ आदि / निर्यात की संरचना पर मैनपेज में अस्पष्ट जानकारी है ।
से उद्धृत करने के लिए exports(5)
:
इसके अलावा, प्रत्येक पंक्ति में एक डैश सूची ("-") के रूप में पथ नाम के बाद डिफ़ॉल्ट विकल्प के लिए एक या एक से अधिक विनिर्देश हो सकते हैं, उसके बाद एक विकल्प सूची होगी।
विकल्प सूची का उपयोग केवल उस लाइन पर सभी बाद के निर्यात के लिए किया जाता है।
"उस लाइन पर बाद में निर्यात" का क्या अर्थ है?
1.2 fsid=0
अब और आवश्यकता नहीं है?
मैं fsid की खोज कर रहा था जब मुझे linux-nfs सूची पर एक टिप्पणी मिली जिसमें कहा गया कि fsid = 0 की अब आवश्यकता नहीं है। अब मैं बस उलझन में हूँ, क्या मुझे nfs4 की ज़रूरत है या नहीं ?!
2. गैर-निर्यात निर्देशिका अभी भी माउंट करने योग्य है
कहो मैं निम्नलिखित पेड़ है:
/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian
और मेरे पास इस fstab प्रविष्टि में निम्नलिखित प्रविष्टियाँ हैं:
/dev/disk/by-label/users /mnt/users ext4 defaults 0 0
/dev/disk/by-label/distr /mnt/distr ext4 defaults 0 0
/mnt/users /exp/users none bind 0 0
/mnt/distr /exp/distr none bind 0 0
और मेरा निर्यात बिल्कुल यही है:
/exp 192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)
और exportfs -arv
दिखाता है:
exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp
फिर मैं ऐसा करने में सक्षम क्यों हूं और एक ग्राहक पर कोई त्रुटि नहीं है:
mount -t nfs4 server:/exp/users /tmp/test
हालांकि /exp/users
निर्यात नहीं किया जाता है? मैंने इस निर्देशिका को निर्यात नहीं किया, और जब /dev/disk/by-label/users
तक मैं निर्दिष्ट नहीं करता crossmnt
, तब तक मैं सामग्री नहीं देखता , मैं अभी भी निर्देशिका में लिखने में सक्षम हूं। मैं जो कुछ भी लिखता हूं वह अंतर्निहित निर्देशिका में जाता है, /exp/users
जिसे मैं देख सकता हूं umount /exp/users; ls /exp/users
।
3. का अजीब मामला showmount -d server
जैसा कि कहा गया है rpc.mountd(8)
, इस कमांड को उन निर्देशिकाओं को प्रदर्शित करना चाहिए जो या तो वर्तमान में क्लाइंट्स द्वारा माउंट की जाती हैं, या स्टाल एंट्रीज में /var/lib/nfs/rmtab
पढ़ी जा सकती हैं:
Rpc.mountd डेमन हर सफल MNT अनुरोध को / var / lib / nfs / rmtab फ़ाइल में प्रविष्टि जोड़कर पंजीकृत करता है। जब एनएफएस क्लाइंट से UMNT अनुरोध प्राप्त होता है, तो rpc.mountd बस / var / lib / nfs / rmtab से मिलान प्रविष्टि को हटा देता है, जब तक कि निर्यात के लिए एक्सेस कंट्रोल सूची उस प्रेषक को निर्यात का उपयोग करने की अनुमति देती है।
(...)
ध्यान दें, हालांकि, यह गारंटी देने के लिए बहुत कम है कि / var / lib / nfs / rmtab की सामग्री सटीक है। UMNT के आह्वान के बाद भी कोई ग्राहक किसी निर्यात पर पहुंच जारी रख सकता है। यदि क्लाइंट UMNT अनुरोध भेजे बिना रिबूट करता है, तो बासी प्रविष्टियाँ उस क्लाइंट के लिए / var / lib / nfs / rmtab में रहती हैं।
इसे पढ़ने के बाद मुझे निश्चित रूप से आश्चर्य होता है:
- क्या इस प्रकार की ग्राहक जानकारी को उजागर करना बहुत असुरक्षित नहीं है;
- बहुत सारे बासी ग्राहकों के साथ एक rmtab के लिए बाध्य अनजान सर्वर व्यवस्थापक नहीं हैं;
- क्या यही कारण है कि nfs4 निर्देशिकाओं को माउंट करने वाले क्लाइंट
mount -v
को आउटपुट के साथ "कुछ भी नहीं" जैसे कुछ देखने के बावजूद माउंट किया गया था ?
मेरे पास nfs4 के बारे में बहुत सारे अन्य प्रश्न हैं, लेकिन मैं इसे इस समय रखूंगा .. :)