SMB3 Linux 서버에서 cifs 공유를 마운트하는 방법은 무엇입니까?

SMB3 Linux 서버에서 cifs 공유를 마운트하는 방법은 무엇입니까?

보안상의 이유로 내 서버에는 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

관련 정보