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
至少為 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
然後我們將 keytab 從廣告伺服器安全複製到我們的客戶端並與客戶端上的 keytab 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