같지 않은유제, 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