보안상의 이유로 내 서버에는 SMB3 프로토콜만 활성화되어 있습니다.
server min protocol = SMB3
client max protocol = SMB3
클라이언트에도 동일한 설정이 있습니다. smbclient는 제대로 작동하지만 문제는 mount.cifs를 사용하여 마운트할 수 없다는 것입니다. 나에게 오류 -95가 발생합니다
Kerberos를 사용해 보았습니다.
mount -t cifs -o vers=3.0,username=myuser,rw,soft,sec=krb5i //myserver/Myshare /mnt
그리고 통과
mount -t cifs -o vers=3.0,username=myuser,password=mypass,rw,soft //myserver/Myshare /mnt
하지만 두 경우 모두 동일한 오류 -95가 발생합니다.
CIFS VFS: Dialect not supported by server. Consider specifying vers=1.0 or vers=2.0 on mount for accessing older servers
CIFS VFS: cifs_mount failed w/return code = -95
답변1
최소한 Kerberos 및 버전 3.1.1에 대한 솔루션을 찾았습니다.
내 사용자 이름이 "pino"라고 가정하면 먼저 AD 서버(Windows, Samba4 등)에 가짜 사용자 "cifs1"에 대한 키탭을 만들어야 합니다.
ssh samba4.ad.server
samba-tool user delete cifs1
samba-tool user create cifs1 --random-password
samba-tool spn add cifs/yourclient.fqdn cifs1
samba-tool domain exportkeytab cifs1.keytab --principal=cifs/yourclient.fqdn
그런 다음 /etc/request.key.conf 파일을 편집하고 다음 두 줄을 추가합니다.
create cifs.spnego * * /usr/sbin/cifs.upcall %k
create dns_resolver * * /usr/sbin/cifs.upcall %k
그런 다음 광고 서버에서 클라이언트로 키탭을 안전하게 복사하고 클라이언트의 키탭 krb5.keytab과 병합합니다.
(echo rkt cifs1.keytab ; echo wkt /etc/krb5.keytab )|ktutil
사용자 "pino"가 인증되었지만 보안상의 이유로 kinit를 다시 실행합니다.
echo passofpino|kinit
이제 마침내 version=3.1.1로 공유를 마운트할 수 있습니다. 가장 중요한 부분은 "cruid"입니다. 그렇지 않으면 실패합니다.
sudo mount.cifs -vvv //client.fqdn/Publicshare -o sec=krb5,user=pino,cruid=pino,vers=3.1.1 /mnt
반품
mount.cifs kernel mount options: ip=192.168.0.2,unc=\\client.fqdn\Publicshare,sec=krb5,vers=3.1.1,cruid=10003,user=pino,pass=********
krb5 대신 일반 비밀번호를 사용하려고 하면 오류가 반환되지만 kerberos를 사용하는 것이 더 안전하므로 문제가 되지 않습니다. 공유에 글을 쓰고 싶다면 그 줄은 다음과 같습니다.
sudo mount.cifs -vvv //client.fqdn/Publicshare -o sec=krb5,user=pino,cruid=pino,vers=3.1.1,forceuid,forcegid,uid=$(id -u pino),gid=$(id -g pino) /mnt