cif 설치: "작업이 지원되지 않습니다"

cif 설치: "작업이 지원되지 않습니다"

같지 않은유제, smbclient에도 연결할 수 없습니다.

삼바 공유는 Windows에서는 자동으로 잘 작동하지만 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에서는 작동하지 않습니까?

답변1

@Ken 및 @Paul의 답변 작성: v1 이상에서는 SMB 버전을 지정해야 합니다.

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

Linux cifs 커널 클라이언트는 2.5.42부터 커널에 포함되었습니다. cifs 프로토콜(및 관련 초기 SMB 방언)은 기본 프로토콜("vers=1.0")이지만 "vers=2.0"을 지정하여 최신 방언(SMB2.02, SMB2.1, SMB3 및 SMB3.02)에 대해 선택할 수 있습니다. ) 설치 시 "vers=2.1" 또는 "vers=3.0" 또는 "vers=3.02"를 지원합니다. --https://wiki.samba.org/index.php/LinuxCIFSKernel

smbclient의 경우 진언은 다음과 같습니다 -m, --max-protocol=LEVEL.

smbclient -L server -U username -m SMB2

smbclient 허용 수준 목록을 찾지 못했습니다. 마크 뮐펠트(Marc Muehlfeld)에 따르면이 스레드Windows에서 사용되는 버전은 다음과 같습니다.

  • Vista/2008에서 도입된 SMB 2.0
  • Win7/2008R2용 SMB 2.1
  • Win8/2012용 SMB 2.2(3.0이라고도 함)
  • 중소기업 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과 유사한 조언을 더 이상 따라서는 안 된다는 의견을 본 적이 있습니다. 따라서 최소한 혼합하여 사용하지 않는 sec것이 좋습니다 vers.

답변2

좋아요, "나"가 알아냈습니다. 어떤 이유로 "vers=3.0"을 추가하면 성공했습니다. 이것이 없으면 왜 문제가 발생하는지, 왜 작동하는지 모르겠습니다. 하지만 나중에 다른 사람의 freenas 설정에서 이 문제가 발생하는 경우를 대비해 참고하세요.

답변3

나는 한 달 넘게 이 문제로 어려움을 겪고 있습니다. 클라이언트가 Xenserver 6.2 및 6.5인 경우 CIFS를 통해 ISO 디렉터리를 탑재할 수 없습니다.

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

이제 인증에 옵션을 추가하는 방법을 알아보세요.

당신이 누구든지 Paul에게 감사드립니다.

답변4

내가 찾은 것은 삭제 vers=3.0하고 사용하는 것입니다 sec=ntlmv2. 이것은 "@matt wilkie"가 말한 내용을 재확인합니다.

그래서 내 행은 다음과 같습니다/etc/fstab

//<server>/<share> /mnt/point cifs sec=ntlmv2,iocharset=utf8,credential=/.smbcredentials 0 0

관련 정보