การติดตั้งไดรฟ์ cifs ให้: ข้อผิดพลาดการเมาท์ (22): อาร์กิวเมนต์ไม่ถูกต้อง


44

ฉันพยายามวิ่ง:

sudo mount -t cifs //user.my-backup.com /mnt/wal_drive -o iocharset=utf8,rw,credentials=/etc/backupcredentials.txt,uid=postgres,gid=postgres,file_mode=0660,dir_mode=0770

อย่างไรก็ตามฉันยังคงได้รับข้อผิดพลาดต่อไปนี้:

mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

ผมทำอะไรผิดหรือเปล่า?


1
ปัญหาที่เป็นไปได้สองประการ: แหล่งที่มาของคุณคือ URL ซึ่งอาจไม่สามารถแก้ไขได้หรือไม่ได้โฆษณาแซมบ้า และ uid / gid จำเป็นต้องแสดงตัวเลข คุณอ่านmanหน้าอ้างอิงแล้วหรือยัง?
douggro

3
การเมานท์ควรส่งคืนข้อความแสดงข้อผิดพลาดที่ดีกว่า การรู้ว่าอาร์กิวเมนต์ใดไม่ถูกต้องจะทำให้ข้อความแสดงข้อผิดพลาดนี้มีประโยชน์มากกว่า
เกรกอรี่ Arenius

1
การเมาท์ให้ข้อผิดพลาดทั่วไปเนื่องจากรายละเอียดอยู่ในบันทึก ตามที่ได้กล่าวไว้ด้านล่างให้ใช้ tail -f /var/log/kern.log เพื่อทำความเข้าใจว่าเกิดอะไรขึ้น
Sam

1
dmesg | tailบอกคุณอีกเล็กน้อยเกี่ยวกับตัวเลือกที่ทำให้คุณเดือดร้อน
HongboZhu

คำตอบ:


63

อาจจะช่วยด้วยสิ่งนี้mount error(22): Invalid argument... ข้อผิดพลาดที่เป็นไปได้คืออาร์กิวเมนต์ / s (โหมด) ในคำสั่ง mount

  1. ตรวจสอบบันทึกของคุณเกี่ยวกับข้อผิดพลาดที่พบ

    tail -f  /var/log/kern.log 
    
  2. ลบอาร์กิวเมนต์ที่ไม่ถูกต้อง


9
สิ่งนี้ใช้ได้สำหรับฉัน ฉันพบข้อผิดพลาดCIFS not working, kernel upgrade:No dialect specified on mountและแก้ไขได้โดย [เพิ่ม] vers=1.0ลงใน / etc / fstab ของฉัน ( bbs.archlinux.org/viewtopic.php?id=230952 ) ฉันสงสัยว่ามันเกิดจากการใช้เคอร์เนล 4.13
blaha

Jeez ขอบคุณพระเจ้าสำหรับ stackoverflow ปัญหาเดียวกันกับอูบุนตู ฉันเพิ่ม vers = 2.0 และใช้งานได้ mount.cifs ปัจจุบันอยู่ที่ 6.4 อาจมีการปรับปรุงข้อมูลประจำตัวบางอย่าง แต่ไม่ได้ขุดลงใน CIFS ในขณะนี้ ...
dturvene

6

ฉันมีปัญหาเดียวกันกับ Arch Linux ด้วยข้อความนี้ในบันทึก:

kernel: CIFS VFS: cifs_mount failed w/return code = -22

สำหรับฉันทางออกคือการระบุ cif รุ่นเก่า (โดยค่าเริ่มต้นมันคือ 3.0):

/etc/fstab:

//my-router/share /media/share cifs ver="2.1",rw,soft,uid=ele,gid=ele,file_mode=0770,dir_mode=0770,credentials=/etc/router-credentials.conf 0 0

3

อีกสาเหตุที่เป็นไปได้คือการปรากฏตัวของsec=ntlmใน/etc/fstabและมันเข้ากันไม่ได้กับโปรโตคอล SMB ใหม่เช่น SMB3

แม้ว่าจะไม่ใช่กรณีของ OP แต่ก็สามารถทำให้เกิดmount error(22): Invalid argumentข้อผิดพลาดได้เช่นเดียวกับฉันหลังจากอัปเกรดเซิร์ฟเวอร์เก่า

แม้ว่าจะkern.logมีคำแนะนำอยู่specify vers=1.0 on mountแต่ก็อาจจะปลอดภัยกว่าที่จะลบหรือเปลี่ยนแปลงsec=ntlmแทน บางทีอาจจะใช้ค่าเริ่มต้นเพื่อให้การเจรจาต่อรองโดยอัตโนมัติรุ่น SMB vers=3.0,sec=ntlmsspและการรักษาความปลอดภัยหรือระบุตัวเลือกที่เข้ากันได้เช่น

เห็นได้ชัดว่าสิ่งนี้ขึ้นอยู่กับคุณสมบัติของเซิร์ฟเวอร์ SMB ของคุณ แต่ฉันจะพยายามหลีกเลี่ยงvers=1.0เว้นแต่จำเป็น



2

ในกรณีของฉันปัญหานี้เกิดขึ้นเนื่องจากฉันติดตั้งไดเรกทอรีที่มีลิงก์สัญลักษณ์ หลังจากตรวจสอบลิงก์สัญลักษณ์ใน Windows ฉันได้รับเส้นทาง "ของจริง" และติดตั้งลิงก์เหล่านั้นแทน


2

คุณสามารถเพิ่มข้อมูลรุ่นสำหรับ SMB เพื่อแก้ไขปัญหา สิ่งที่ฉันทำคือเพิ่ม i vers = 1.0 นี่คือ SMB เวอร์ชัน 1 ซึ่งใช้งานได้กับไดรเวอร์ smb ทั้งหมด สำหรับกรณีของคุณมันจะออกมาเป็นแบบนี้

sudo mount -t cifs //user.my-backup.com /mnt/wal_drive -o iocharset=utf8,rw,vers=1.0,credentials=/etc/backupcredentials.txt,uid=postgres,gid=postgre ,file_mode=0660,dir_mode=0770

1

หลังจากอัปเกรดเป็น Jessie Debian แพ็คเกจจะต้องมีการเปลี่ยนแปลง ฉันลบออกguid=0จากfstabภูเขาต่อไปนี้และมันก็ทำงานได้ถูกต้องอีกครั้ง

//x.x.x.x/General/  /usr/local/share/general cifs uid=0,guid=0,rw,credentials=/etc/gen-cifspasswd 0 0
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.