krb5 を使用した mount.cifs は失敗するが、同じ krb5-ticket を使用した smbclient は動作する

krb5 を使用した mount.cifs は失敗するが、同じ krb5-ticket を使用した smbclient は動作する

S4U2Proxy 拡張機能を使用して、偽装された krb5 チケット (TGS) を生成する必要があります。チケットは正常に作成され、たとえば smbclient で問題なく使用できます。ただし、実際には、動作していない mount.cifs または mount.nfs で使用する必要があります。

kinit (TGT があることを意味します) を実行すると、マウントは問題なく機能します。

マウント、または基礎となる機能には TGT が必要ですか? (Smbclient は明らかに必要ありません)。必要でない場合、マウントによって使用される krb5 チケットには特別な要件がありますか?

エラーメッセージは次のとおりです:

mount error(126): Required key not available

これは dmesg の最も重要な出力だと思います (完全な出力は下記を参照)。

cifs_spnego.c: key description = ver=0x2;host=file.mydomain.local;ip4=10.211.55.28;sec=krb5;uid=0x0;creduid=0x3e8;user=jdoe;pid=0x289a

CIFS VFS: Send error in SessSetup = -126

Ubuntu 18.04、カーネルバージョン 4.15.0-66-generic

クリスト:

Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]

Valid starting     Expires            Service principal
11/10/19 06:23:34  11/10/19 16:23:34  cifs/[email protected]
    renew until 11/11/19 06:23:34

使用したマウントコマンド:

sudo mount -t cifs -o username=jdoe,domain=mydomain.local,sec=krb5,cruid=1000 //file.mydomain.local/share1 /mnt

完全なdmesg出力:

connect.c: Username: jdoe
connect.c: file mode: 0x1ed  dir mode: 0x1ed
connect.c: CIFS VFS: in cifs_mount as Xid: 182 with uid: 0
connect.c: UNC: \\file.mydomain.local\share1
connect.c: Socket created
connect.c: sndbuf 16384 rcvbuf 87380 rcvtimeo 0x6d6
fscache.c: cifs_fscache_get_client_cookie: (0x00000000dabd1b06/0x00000000d1987345)
connect.c: CIFS VFS: in cifs_get_smb_ses as Xid: 183 with uid: 0
connect.c: Existing smb sess not found
smb2pdu.c: Negotiate protocol
transport.c: Sending smb: smb_len=106
connect.c: Demultiplex PID: 10396
connect.c: RFC1002 header 0xf8
smb2misc.c: smb2_check_message length: 0xfc, smb_buf_length: 0xf8
smb2misc.c: SMB2 data length 120 offset 128
smb2misc.c: SMB2 len 252
transport.c: cifs_sync_mid_result: cmd=0 mid=0 state=4
misc.c: Null buffer passed to cifs_small_buf_release
smb2pdu.c: mode 0x1
smb2pdu.c: negotiated smb3.02 dialect
asn1.c: OID len = 10 oid = 0x1 0x3 0x6 0x1
asn1.c: OID len = 7 oid = 0x1 0x2 0x348 0xbb92
asn1.c: OID len = 7 oid = 0x1 0x2 0x348 0x1bb92
asn1.c: OID len = 8 oid = 0x1 0x2 0x348 0x1bb92
asn1.c: OID len = 10 oid = 0x1 0x3 0x6 0x1
connect.c: Security Mode: 0x1 Capabilities: 0x300067 TimeAdjust: 0
smb2pdu.c: Session Setup
smb2pdu.c: sess setup type 5
cifs_spnego.c: key description = ver=0x2;host=file.mydomain.local;ip4=10.211.55.28;sec=krb5;uid=0x0;creduid=0x3e8;user=jdoe;pid=0x289a
CIFS VFS: Send error in SessSetup = -126
connect.c: CIFS VFS: leaving cifs_get_smb_ses (xid = 183) rc = -126
fscache.c: cifs_fscache_release_client_cookie: (0x00000000dabd1b06/0x00000000d1987345)
connect.c: CIFS VFS: leaving cifs_mount (xid = 182) rc = -126

答え1

はい、keyutils はインストールされています。一方、「mount」には、Kerberos を指す keytab ファイル内の対応するエントリが必要であることがわかりました。

関連情報