การติดตั้ง cifs:“ ไม่รองรับการใช้งาน”


17

ต่างจากคำถามที่คล้ายกันฉันไม่สามารถเชื่อมต่อกับ smbclient ได้

ส่วนแบ่งแซมบ้าทำงานได้ดีในหน้าต่างและทำงานได้โดยอัตโนมัติ แต่ใน Linux ฉันไม่สามารถติดตั้งได้เลยและข้อความแสดงข้อผิดพลาดเป็นความลับที่ดีที่สุด นี่คือ samba.conf ของฉัน:

[global]
    dos charset = CP437
    netbios name = REDACTED
    server string = Lab
    server role = standalone server
    map to guest = Bad User
    obey pam restrictions = Yes
    smb passwd file = /var/etc/private/smbpasswd
    private dir = /var/etc/private
    max log size = 51200
    server min protocol = SMB2
    time server = Yes
    deadtime = 15
    max open files = 11070
    hostname lookups = Yes
    load printers = No
    printcap name = /dev/null
    disable spoolss = Yes
    dns proxy = No
    pid directory = /var/run/samba
    panic action = /usr/local/libexec/samba/samba-backtrace
    idmap config * : backend = tdb
    acl allow execute always = Yes
    create mask = 0666
    directory mask = 0777
    directory name cache size = 0
    kernel change notify = No
    map archive = No
    map readonly = no
    store dos attributes = Yes
    strict locking = No

[common]
    comment = Lab Common share
    path = /mnt/pool/common
    read only = No
    inherit acls = Yes
    hosts allow = XXX.XXX.XX.X/24, XXX.XX.XX.X/24 <-- redacted
    hide dot files = No
    veto files = /.snap/.windows/.zfs/
    vfs objects = zfsacl, streams_xattr, aio_pthread
    zfsacl:acesort = dontcare
    nfs4:chown = yes
    nfs4:acedup = merge
    nfs4:mode = special
    recycle:subdir_mode = 0700
    recycle:directory_mode = 0777
    recycle:touch = yes
    recycle:versions = yes
    recycle:keeptree = yes
    recycle:repository = .recycle/%U

ข้อความแสดงข้อผิดพลาดคือ:

[as@localhost ~]$ sudo mount -t cifs -o username=removed,password=removed  //server.ip.address/common /media/windowsshare/
mount error(95): Operation not supported

ข้อความที่ไร้ประโยชน์อย่างสมบูรณ์แบบ

dmesg ที่เปิดใช้งานการดีบัก:

[237179.795551] fs/cifs/cifsfs.c: Devname: //132.239.27.172/common flags: 0
[237179.795563] fs/cifs/connect.c: Username: lauria
[237179.795565] fs/cifs/connect.c: file mode: 0x1ed  dir mode: 0x1ed
[237179.795600] fs/cifs/connect.c: CIFS VFS: in cifs_mount as Xid: 44 with uid: 0
[237179.795600] fs/cifs/connect.c: UNC: \\132.239.27.172\common
[237179.795605] fs/cifs/connect.c: Socket created
[237179.795606] fs/cifs/connect.c: sndbuf 16384 rcvbuf 87380 rcvtimeo 0x1b58
[237179.795897] fs/cifs/fscache.c: cifs_fscache_get_client_cookie: (0xffff8803e0aa4800/0xffff880035d25580)
[237179.795898] fs/cifs/connect.c: Demultiplex PID: 25817
[237179.795902] fs/cifs/connect.c: CIFS VFS: in cifs_get_smb_ses as Xid: 45 with uid: 0
[237179.795903] fs/cifs/connect.c: Existing smb sess not found
[237179.795907] fs/cifs/cifssmb.c: Requesting extended security.
[237179.795910] fs/cifs/transport.c: For smb_command 114
[237179.795912] fs/cifs/transport.c: Sending smb: smb_len=78
[237179.801062] fs/cifs/connect.c: RFC1002 header 0x25
[237179.801067] fs/cifs/misc.c: checkSMB Length: 0x29, smb_buf_length: 0x25
[237179.801090] fs/cifs/transport.c: cifs_sync_mid_result: cmd=114 mid=1 state=4
[237179.801093] fs/cifs/cifssmb.c: Dialect: 65535
[237179.801094] fs/cifs/cifssmb.c: negprot rc -95
[237179.801097] fs/cifs/connect.c: CIFS VFS: leaving cifs_get_smb_ses (xid = 45) rc = -95
[237179.801100] fs/cifs/fscache.c: cifs_fscache_release_client_cookie: (0xffff8803e0aa4800/0xffff880035d25580)
[237179.801262] fs/cifs/connect.c: CIFS VFS: leaving cifs_mount (xid = 44) rc = -95
[237179.801263] CIFS VFS: cifs_mount failed w/return code = -95

ฉันลองใช้-secตัวเลือกที่แตกต่างกันมากมาย - พวกเขาทั้งหมดล้มเหลวทุกอย่างมีข้อผิดพลาดเดียวกัน smbclient ไม่มีประโยชน์เช่นกัน:

smbclient //132.239.27.172/common -U username%password
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE

มันทำงานบน windows ได้อย่างไร แต่ไม่ใช่ทั้งหมดบน linux?

คำตอบ:


14

ในการกรอกคำตอบจาก @Ken และ @Paul: ต้องระบุเวอร์ชัน SMB เมื่อสูงกว่า v1:

mount -t cifs \
  -o username=USERNAME,vers=3.0 \
  //server/share \
  /mnt/point

เคอร์เนลไคลเอ็นต์ Linux cifs รวมอยู่ในเคอร์เนลตั้งแต่ 2.5.42 โปรโตคอล cifs (และภาษา SMB ก่อนหน้านี้ที่เกี่ยวข้อง) เป็นค่าเริ่มต้น ("vers = 1.0") แต่รองรับภาษาท้องถิ่นที่ใหม่กว่า (SMB2.02, SMB2.1 และ SMB3 และ SMB3.02) สามารถเลือกได้โดยระบุ "vers = 2.0" หรือ "vers = 2.1" หรือ "vers = 3.0" หรือ "vers = 3.02" บนเมานท์ - https://wiki.samba.org/index.php/LinuxCIFSKernel

สำหรับ smbclient คาถาคือ-m, --max-protocol=LEVEL:

smblcient -L server -U username -m SMB2

ฉันไม่พบรายการระดับที่อนุญาตสำหรับ smbclient ตาม Marc Muehlfeld ในหัวข้อนี้เวอร์ชันที่ใช้โดย Windows คือ:

  • SMB 2.0 เปิดตัวโดย Vista / 2008
  • SMB 2.1 โดย Win7 / 2008R2
  • SMB 2.2 aka 3.0 โดย Win8 / 2012
  • SMB 3.02 โดย 8.1 / 2012R2

มีmountข้อความแสดงข้อผิดพลาดหลายอย่างที่สามารถตรวจสอบย้อนกลับไปที่ระดับโปรโตคอลไม่ตรงกันได้ รายการที่ไม่ละเอียด (อย่าลังเลที่จะแก้ไขคำตอบและเพิ่มอีก):

mount error(13): Permission denied
mount error(95): Operation not supported
mount error(121): Remote I/O error

ในที่สุดฉันก็เห็นความคิดเห็นบางส่วนที่บ่งบอกถึงคำแนะนำที่มักจะยกมาให้ใช้ตัวเลือกsec=ntlmv2และไม่ควรติดตามที่คล้ายกันอีก ดังนั้นอาจเป็นความคิดที่ดีที่จะอย่างน้อยไม่ผสมและตรงและsecvers


มันอาจจะเป็นเครื่องใหม่สำหรับฉันvers=3.0ไม่ได้ทำงาน แต่vers=3.02ก็ขอบคุณ
dashesy

3
และในกรณีของฉันสิ่งเดียวที่ฉันจะไปทำงานคือvers=2.0(Ubuntu 18.04)
James T Snell

1
ประสบการณ์เดียวกันกับ Ubuntu 18.04; โปรดลองรุ่น SMB ที่เป็นไปได้ทั้งหมด
Jay Taylor

9

ตกลง "ฉัน" คิดออก - ด้วยเหตุผลบางอย่างการเพิ่ม "vers = 3.0" ทำให้ใช้งานได้ ฉันไม่รู้ว่าทำไมมันถึงมีปัญหาหากไม่มีสิ่งนี้หรือทำไมจึงใช้งานได้ แต่สำหรับการอ้างอิงในอนาคตหากผู้อื่นมีปัญหานี้กับการตั้งค่า freenas ของพวกเขา


1
เพิ่มvers=3.0ไปยังสิ่งที่ ? โปรดช่วย
khaverim

1
ฉันคิดว่าพอลตั้งใจจะเมานต์ตัวเลือก
BHS

2
vers=1.0ทำงานให้ฉัน
Bilow

5

ฉันต่อสู้มานานกว่าหนึ่งเดือนแล้ว ด้วยไคลเอ็นต์ที่เป็น Xenserver 6.2 และ 6.5 ไม่สามารถเมานต์ไดเร็กทอรี ISO ผ่าน CIFS

vers = 3.0 ใช้งานได้ในที่สุด

คุณพบตัวเลือกนี้ที่ไหน ??!

โดเมนของฉันคือ Windows 2012 R2 ฉันไม่ได้ลดความต้องการการรับรองความถูกต้องในรีจิสทรี - เป็นค่าเริ่มต้นทั้งหมด (ฉันเพิ่งจะเปิดมันแบบกว้าง ๆ เมื่อฉันพบสิ่งนี้)

ฉันไม่จำเป็นต้องระบุการตั้งค่า sec = เลย

ฉันต้องระบุโดเมน ฉันระบุโดเมนในตัวพิมพ์ใหญ่ - อาจไม่จำเป็น

คำสั่งของฉันติดตาม

mount -t cifs "//192.168.92.25/shared" -o username=administrator,password=<your_password>,domain=<YOUR DOMAIN IN CAPS>,vers=3\.0 /root/tmp

ตอนนี้เพื่อหาวิธีเพิ่มตัวเลือกในการรับรองความถูกต้อง

ขอบคุณพอลไม่ว่าคุณจะเป็นใคร


3\.0ไม่ได้ผลสำหรับฉัน แต่3.0ทำ
trpt4him

0

FreeNas อนุญาตให้คุณตั้งค่าการแบ่งปันที่ปลอดภัยยิ่งขึ้น หากคุณอนุญาตโปรโตคอลความปลอดภัยของ Windows ต่ำสุด (windows NT 4.0) มันจะทำงานกับ samba หากคุณตั้งไว้ให้พูดโพรโทคอล Windows XP ขึ้นไปและคุณต้องการ vers = 3.0 เท่าที่ฉันค้นพบหลังจากที่พยายาม 40 นาทีเพื่อรับ FreeNas connecte wiv CentOS 7 ปัญหาคือไคลเอนต์ (และ GUI) ควรตรวจสอบสูงสุด รุ่นลง แต่มันจะไปจากรุ่นต่ำสุดที่มีอยู่ มันอาจจะทำให้รู้สึกครั้งเดียว แต่มีการเปลี่ยนแปลงมาก ฉันคิดว่ามันน่ารำคาญเป็นพิเศษที่ใน Gnome คุณไม่สามารถเพิ่มตัวเลือกไม่ว่าจะใช้ CIFS หรือระบุรุ่นโปรโตคอลความปลอดภัย ฉันเดาว่าคนเหล่านี้จะใช้บรรทัดคำสั่งหรือไม่มีอะไรเลย แต่นั่นทำให้ Linux ไม่สามารถใช้งานได้อย่างกว้างขวางมากขึ้นโดยการใช้เดสก์ท็อป ซึ่งเป็นความอัปยศจริงๆ


-1

บนบริการคลิก nas4free -> CIFS / SMB ที่ด้านล่างของหน้าจอในประเภทกล่องพารามิเตอร์เพิ่มเติม

ntlm auth = ใช่


มันคืออะไรnas4freeและเกี่ยวข้องกับคำถาม OPs อย่างไร
jesse_b
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.