लिनक्स सांबा सर्वर: cifs_mount w / रिटर्न कोड = -12 विफल


16

सर्वर: RHEL 5.9 / smbd 3.0.33 - ग्राहक: विभिन्न, हालांकि सभी वर्तमान माउंट का उपयोग कर रहे थे ।if (5.2)

मैंने पहले ही इस समस्या को हल कर लिया था, लेकिन इन त्रुटि कोडों का शिकार करने के लिए यह एक बुरा सपना था, मुझे लगा जैसे इसे सार्वभौमिक दस्तावेज की आवश्यकता थी।

लक्षण : अप्रत्याशित, आंतरायिक माउंट विफलता एक विशिष्ट cifs क्लाइंट से लिनक्स samba सर्वर तक। मेरे सभी लिनक्स क्लाइंट लॉगिन पर उपयोगकर्ता के घरों को pam_mount करते हैं। बेतरतीब ढंग से, और छिटपुट रूप से घरेलू dir mounts एक मशीन पर विफल होने लगे । लॉगिन और माउंट सभी अन्य ग्राहकों पर निर्दोष रूप से काम करते रहे। शुरू में मुझे लगा कि टूटे हुए ग्राहक पर असामान्य मात्रा में गतिविधि होने के कारण धुएं का गुबार फैल रहा है, लेकिन रुक-रुक कर होने वाली विफलताएं भी उपयोग में आने के बाद भी मर रही हैं।

हाथ से माउंट करने का प्रयास विफल रहता है और रिपोर्ट:

Errors from underlying mount program
mount error(12): Cannot allocate memory
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

<debug enable="1"/>Pam_mod.net से अधिक जानकारी प्राप्त करने के लिए /etc/security/pam_mount.conf.xml में सेट करें :

command: 'mount' '-t' 'cifs' '//my_server/watdo' '/home/watdo' '-o' 'user=watdo,uid=666,gid=666'
pam_mount(misc.c:38): set_myuid<pre>: (ruid/rgid=0/0, e=0/0)
pam_mount(misc.c:38): set_myuid<post>: (ruid/rgid=0/0, e=0/0)
pam_mount(mount.c:64): Errors from underlying mount program:
pam_mount(mount.c:68): mount error(12): Cannot allocate memory
pam_mount(mount.c:68): Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)`

/var/log/kern.log ने भी इस घटना की सूचना दी:

kernel: [4316790.256149] CIFS VFS: cifs_mount failed w/return code = -12

'गूंज 1> / proc / fs / cifs / cifsFYI' क्रैंक ऊपर माउंट। cifs डीबग (/ / var / log / डिबग को लिखता है)। यहाँ अच्छा हिस्सा है (परिचित देखो?):

CIFS Session Established successfully
For smb_command 117
Sending smb:  total_len 88
cifs_sync_mid_result: cmd=117 mid=54307 state=4
Mapping smb error code 0xc0000205 to POSIX err -12

इस बिंदु पर वस्तुतः ग्राहक पक्ष पर कोई अन्य जानकारी उपलब्ध नहीं है। cifs माउंट अनुरोध निकल जाता है और ग्राहक लगभग तुरंत मर जाता है। Mount.cifs की त्रुटि (12) बहुत ही असंगत है (मैन पेज मदद नहीं करता है, thx लोग)। व्यापक इंटरनेट खोज से पता चलता है कि यह एक सामान्य त्रुटि कोड है, इसे अनइंफॉर्मेटिव के रूप में भी पुष्टि करता है।

सर्वर पर जाँच करने का समय! log level = 3/Etc/samba/smb.conf (उपयोग सांबा पुस्तक से) में smbd के लिए सेट करें : "3 से ऊपर के स्तर डेवलपर्स द्वारा उपयोग के लिए हैं और भारी मात्रा में गूढ़ जानकारी को डंप करते हैं।" योग्य!)। यहाँ प्रासंगिक लाइन है:

[2013/02/08 10:18:03, 3] smbd/error.c:error_packet_set(106) error packet at smbd/reply.c(514) cmd=117 (SMBtconX) NT_STATUS_INSUFF_SERVER_RESOURCES

लगभग वहाँ ... smb मेलिंग सूची संग्रह से मैंने पाया कि कोई व्यक्ति इसी तरह के मुद्दे की रिपोर्टिंग कर रहा है, जिसे व्यक्तिगत smb कनेक्शन पर एक पेग्ड शेयर सीमा के रूप में पहचाना जाता है। सर्वर पर खुले शेयरों की सूची बनाएं:

smbstatus -S | grep <serverIP> | wc -lलौट आया 2048 । बहुत षड्यंत्रकारी।

वास्तव में 'आईपीसी $' के लिए smbstatus -Sप्रकट हजारों प्रविष्टियों के आउटपुट की जांच । IPC $ पर सांबा डॉक्स यह बताता है कि यह गुमनाम शेयर ब्राउज़िंग और "कुछ अन्य संसाधनों" तक पहुंच के साथ शामिल है। मैंने /etc/samba/smb.conf में सर्वर पर होस्ट इनकार सेट किया:

[IPC$]
hosts deny = 0.0.0.0/0

अब महान काम करता है। ठीक है, उम्मीद है कि यहाँ कुछ भविष्य में कुछ गरीब आत्मा की मदद करता है।

मुझे लगता है कि मैं उस साइट की भावना का अनुमान लगाऊंगा जो एक सवाल पूछेगा: smbd IPC $ शेयरों को साफ क्यों नहीं करेगा? प्रति ग्राहक एक कनेक्शन के बजाय एक शेयर के लिए प्रति उपयोगकर्ता एक आईपीसी $ क्यों स्थापित करें? क्या आप ग्राहक पक्ष से IPC $ शेयर निर्माण को अक्षम कर सकते हैं? क्या प्रति शेयर अधिकतम # कनेक्शन बढ़ाने का एक तरीका है (यह नहीं कि इससे इस मामले में मदद मिली होगी)? मैंने इसे डॉक्स में नहीं देखा।


"बेतरतीब ढंग से, और कई मायनों", "रुक-रुक कर विफलताओं" और स्मृति आवंटन त्रुटियों - आप था जाँच (शारीरिक) स्मृति त्रुटियों के लिए?
ckujau

1
IPC $ शेयर को हमेशा प्रति-उपयोगकर्ता संदर्भ में एक्सेस किया जाता है क्योंकि यह वास्तव में (MSFT दुनिया में) एक रिमोट-प्रोसेस-कॉल (RPC) इंटरफ़ेस है। यानी IPC $ शेयर एक उपयोगकर्ता को सर्वर सेवा को प्रमाणित करने के लिए एक चैनल देता है, ताकि वे इसके बाद आरपीसी कॉल कर सकें। यदि आपको इसकी कोई आवश्यकता नहीं है, तो इसे अक्षम करना अच्छा सुरक्षा अभ्यास है (और tbh मेरे पास एक कठिन समय है जो यह विश्वास करता है कि कोई भी करता है)।
आल्टरनलिंग

सांबा समस्या निवारण के विस्तृत उदाहरण के लिए धन्यवाद। सार त्रुटि संदेश दुःस्वप्न है।
एमएमवी-आरयू

जवाबों:


1

यह एक पुराना मामला है, लेकिन इसे अनुत्तरित मानते हुए और मैं IPC $ और सांबा में देख रहा था, मैं इसे प्रलेखन के लिए एक प्रयास दूंगा।

क्यों smbd IPC $ शेयरों को साफ नहीं करेगा?

जैसा कि आपके प्रश्न की टिप्पणियों में ऊपर कहा गया है, सेवा का उपयोग दूरस्थ प्रशासन और सर्वर के बीच संचार के लिए किया जाता है, और विशेष रूप से सांबा में इसका उपयोग कुछ ब्राउज़िंग और टीसीपी / आईपी उद्देश्यों के लिए किया जाता है। जब तक आपको किसी कारण से इसकी आवश्यकता होती है या कुछ काम नहीं करता है, तब तक इसे निष्क्रिय करना सुरक्षित है। [1]

प्रति ग्राहक एक कनेक्शन के बजाय एक शेयर के लिए प्रति उपयोगकर्ता एक आईपीसी $ क्यों स्थापित करें?

क्योंकि एक उपयोगकर्ता के कई ग्राहक कनेक्शन हो सकते हैं।

क्या आप ग्राहक पक्ष से IPC $ शेयर निर्माण को अक्षम कर सकते हैं?

हां और ना। यह वास्तव में IPC $ शेयर के निर्माण को अक्षम नहीं करता है, लेकिन आप इसे विंडोज़ क्लाइंट से एक्सेस को अक्षम कर सकते हैं। [२]

विस्टा, विंडोज 7, विंडोज 8 और विंडोज 10 के लिए, आप निम्न रजिस्ट्री संपादित कर सकते हैं:

  1. प्रारंभ क्लिक करें, खोज बॉक्स में "regedit" टाइप करें, और फिर खोज परिणामों में regedit.exe पर क्लिक करें। उपयोगकर्ता खाता नियंत्रण संवाद बॉक्स प्रकट होता है।
  2. UAC प्रॉम्प्ट के लिए "हाँ" कहें और रजिस्ट्री संपादक को खोलना चाहिए।
  3. HKEY_LOCAL_MACHINE शाखा खोलें।
  4. सिस्टम शाखा खोलें।
  5. CurrentControlSet शाखा खोलें।
  6. सेवा शाखा खोलें।
  7. लैंसमैनरवर शाखा खोलें।
  8. पैरामीटर शाखा का चयन करें।
  9. संपादित करें, नया, "DWORD (32-बिट) मान" चुनें
  10. “AutoShareWks” टाइप करें और Enter दबाएँ। (0. का डिफ़ॉल्ट मान छोड़ें)
  11. रीबूट या कमांड प्रॉम्प्ट (डॉस या टर्मिनल) का उपयोग करके सेवा को पुनरारंभ करें: "नेट स्टॉप सर्वर" फिर "नेट स्टार्ट सर्वर"।

क्या प्रति शेयर अधिकतम # कनेक्शन बढ़ाने का एक तरीका है (यह नहीं कि इससे इस मामले में मदद मिली होगी)? मैंने इसे डॉक्स में नहीं देखा।

हाँ [3]। नीचे शेयर सिर्फ इनपुट:

[share]
   max connections = ##

जहां XX कनेक्शन की संख्या है।

सूत्रों का कहना है:

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