เซิร์ฟเวอร์: RHEL 5.9 / smbd 3.0.33 - ลูกค้า: หลากหลายแม้ว่าทุกคนกำลังใช้ mount.cifs ปัจจุบัน (5.2)
ฉันแก้ไขปัญหานี้ไปแล้ว แต่มันเป็นฝันร้ายที่จะตามล่ารหัสข้อผิดพลาดเหล่านี้ฉันรู้สึกว่ามันต้องการเอกสารสากล
อาการ : ไม่สามารถคาดเดาได้และความล้มเหลวในการเมาท์เป็นระยะ ๆ จากไคลเอนต์ cifs หนึ่งไปยังเซิร์ฟเวอร์ samba ของ linux ลูกค้า linux ทั้งหมดของฉันใช้ที่บ้าน pam_mount เมื่อล็อกอิน แบบสุ่มและประปรายม้า dir บ้านเริ่มที่จะล้มเหลวในหนึ่งเครื่อง การเข้าสู่ระบบและการติดตั้งยังคงทำงานอย่างไม่มีที่ติกับไคลเอนต์อื่น ๆ ทั้งหมด ตอนแรกฉันคิดว่ากิจกรรมที่ผิดปกติในไคลเอนต์ที่ใช้งานไม่ได้นั้นทำให้ smbd เป็นคนที่คลั่งไคล้
ความพยายามในการเมาท์ด้วยมือล้มเหลวและรายงาน:
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"/>
ใน /etc/security/pam_mount.conf.xml เพื่อรับข้อมูลเพิ่มเติมจาก pam_mount:
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
'echo 1> / proc / fs / cifs / cifsFYI' cranksอัพดีบัก mount.cifs (เขียนไปยัง / var / log / debug) นี่คือส่วนที่ดี (ดูคุ้นเคย):
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) ค่อนข้างไม่ผิดเพี้ยน (man page ช่วยไม่ได้ขอบคุณ) การค้นหาทางอินเทอร์เน็ตอย่างกว้างขวางพบว่านี่เป็นรหัสข้อผิดพลาดทั่วไปนอกจากนี้ยังยืนยันว่าไม่เป็นทางการ
ได้เวลาตรวจสอบเซิร์ฟเวอร์แล้ว! ตั้งค่าlog level = 3
สำหรับ smbd ใน /etc/samba/smb.conf (จากหนังสือการใช้ Samba: "ระดับที่สูงกว่า 3 นั้นใช้สำหรับนักพัฒนาและทิ้งข้อมูลที่เป็นความลับจำนวนมหาศาล" lol!) นี่คือบรรทัดที่เกี่ยวข้อง:
[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 $' แซมบ้าเอกสารเกี่ยวกับ IPC $เปิดเผยว่ามีส่วนเกี่ยวข้องกับการสืบค้นแบบไม่เปิดเผยชื่อและการเข้าถึง "แหล่งข้อมูลอื่น ๆ " ฉันตั้งค่าโฮสต์ปฏิเสธบนเซิร์ฟเวอร์ใน /etc/samba/smb.conf:
[IPC$]
hosts deny = 0.0.0.0/0
ใช้งานได้ดีในขณะนี้ ตกลงหวังว่าบางสิ่งบางอย่างที่นี่จะช่วยให้วิญญาณที่น่าสงสารบางครั้งในอนาคต
ฉันเดาด้วยจิตวิญญาณของเว็บไซต์ฉันจะถามคำถาม: ทำไม smbd จะไม่ล้างข้อมูล IPC $ ที่แชร์กัน เหตุใดจึงต้องสร้าง IPC $ หนึ่งรายการต่อการเชื่อมต่อผู้ใช้เพื่อแบ่งปันมากกว่าหนึ่งรายการต่อการเชื่อมต่อลูกค้า คุณสามารถปิดใช้งานการสร้างการแชร์ IPC $ จากฝั่งไคลเอ็นต์ได้หรือไม่ มีวิธีเพิ่มการเชื่อมต่อสูงสุด # ต่อการแชร์ (ไม่ใช่ว่าจะเป็นประโยชน์ในกรณีนี้) ฉันไม่เห็นมันในเอกสาร