LinuxクライアントはSamba共有にログインできませんが、WindowsおよびMacではログインできます(Active Directory環境)。

LinuxクライアントはSamba共有にログインできませんが、WindowsおよびMacではログインできます(Active Directory環境)。

設定

仕える人

  • セントース 7.6
  • サンバ 4.8
  • ウィングバインダー
  • SSD
  • ケルベロス

このコンピュータは、会社のActive Directoryにメンバーサーバーとして接続されていますが、ドメインコントローラではありません。 (私はRadHatのドキュメントに従ってコンピュータをドメインに参加させ、smbを設定しました。)

これも追加しました

net ads keytab add cifs

ウェブ広告テストへの参加とステータスを通じて肯定的な結果を得ました。

  • WindowsクライアントはDOMAIN \ユーザー名とパスワードの資格情報を使用して接続できます。
  • Mac OSX クライアントは、以下を使用して接続できます。[Eメール保護]とパスワードの資格情報(DOMAIN \ usernameなどの他のオプションは許可されていません)
  • Linuxクライアントはmount.cifsを使用して接続できません。次のオプションを試しました。
    • ユーザー名=ユーザー名、ドメイン=ドメイン
    • ユーザー名=ユーザー名、ドメイン=FULL.DOMAIN.TLD(大文字かどうか)
    • ユーザー名=ドメイン\ユーザー名
    • ユーザー名=FULL.DOMAIN.TLD\ユーザー名
    • ユーザー名=ユーザー名@DOMAIN
    • ...など

このテストで使用されたクライアントは

  • Windows 10
  • セントース7
  • Debian 9
  • Ubuntu 18
  • OSX モハーベ砂漠

一部のクライアントはActive Directoryの一部であり、一部はそうではありません。とにかく結果は同じで、WindowsとOSXのみが共有をマウントできます。

私はすべての可能性をあまり使いませんでしたsec =とvers =を使用し、files_modeとdir_modeを777または644/755に設定しましたが、成功しませんでした。また、資格情報ファイルとfstabの行を試してみました。

私はいつも以下を受け取ります:インストールエラー(13):権限が拒否されました。

興味深いことに、サーバーに設定されているローカルsmbpasswdアカウントを使用して共有をマウントできます。しかし、これは明らかに私が望むものではありません。

もう一つの興味深い点は、smb://user@を使用してXFCEからThunarのサーバーに接続できることです。これはsmbclientでも機能します。

これは私のconfファイルです

smb構成ファイル

[global]
 workgroup = DOMAIN
 security = ads
 client signing = yes
 client use spnego = yes
 realm = DOMAIN.DOM.CH
 server role = MEMBER SERVER
 passdb backend = tdbsam
 kerberos method = secrets and keytab
 idmap config * : range = 10000-99999999
 idmap config * : backend = tdb
 wins server = xx.xx.xx.xx
 winbind use default domain = yes

 load printers = no
 disable spoolss = yes
 show add printer wizard = No

 local master = No
 dns proxy = No
 logging = file
 log file = /var/log/samba/smb-%I.log
 log level = 4
 max log size = 10000
 follow symlinks = yes

 min protocol = SMB2
 client min protocol = SMB2

 debug hires timestamp = No
 acl group control = yes
 delete readonly = yes
 acl allow execute always = yes
 dos filemode = Yes
 inherit permissions = Yes
 store dos attributes = Yes

 vfs objects = acl_xattr

[MyShare]
 inherit acls = Yes
 path = /srv/samba/partage
 read only = no
 admin users = @"DOMAIN\GROUP-AdminsU" "DOMAIN\user"
 vfs objects = acl_xattr

krb5.conf

# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/


includedir /var/lib/sss/pubconf/krb5.include.d/
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log


[libdefaults]
 dns_lookup_realm = false
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 default_ccache_name = KEYRING:persistent:%{uid}


default_realm = DOMAIN.DOM.CH
[realms]
 DOMAIN.DOM.CH = {
  kdc = domain.dom.ch
  admin_server = domain.dom.ch
 }


[domain_realm]
 domain.dom.ch = DOMAIN.DOM.CH
 .domain.dom.ch = DOMAIN.DOM.CH

SSD構成ファイル

[sssd]
domains = domain.dom.ch
config_file_version = 2
services = nss, pam
default_domain_suffix = DOMAIN.DOM.CH

[domain/domain.dom.ch]
ad_domain = domain.dom.ch
krb5_realm = DOMAIN.DOM.CH
realmd_tags = manages-system joined-with-samba 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%u@%d
access_provider = ad

Sambaログレベル10を確認しましたが、悪用可能なエラーは次のとおりです。より明確にするために、ログをモジュールごとに分割しました。

承認:

 Got user=[user] domain=[DOMAIN] workstation=[] len1=0 len2=166
 Mapping user [DOMAIN]\[user] from workstation []
 ...
 check_ntlm_password:  Checking password for unmapped user [DOMAIN]\[user]@[] with the new password interface
 check_ntlm_password:  mapped user is: [DOMAIN]\[user]@[]
 check_ntlm_password: auth_context challenge created by random
 challenge is:
 Check auth for: [user]
 auth_check_ntlm_password: guest had nothing to say
 Check auth for: [user]
 check_samstrict_security: DOMAIN is not one of my local names (ROLE_DOMAIN_MEMBER)
 auth_check_ntlm_password: sam had nothing to say
 Check auth for: [user]
 check_winbind_security: wbcAuthenticateUserEx failed: WBC_ERR_WINBIND_NOT_AVAILABLE
 auth_check_ntlm_password: winbind authentication for user [user] FAILED with error NT_STATUS_LOGON_FAILURE, authoritative=1
 check_ntlm_password:  Authentication for user [user] -> [user] FAILED with error NT_STATUS_LOGON_FAILURE, authoritative=1
 ntlmssp_server_auth_send: Checking NTLMSSP password for DOMAIN\user failed: NT_STATUS_LOGON_FAILURE
 gensec_update_done: ntlmssp[0x55ad6e4aba70]: NT_STATUS_LOGON_FAILURE tevent_req[0x55ad6e4ab680/../auth/ntlmssp/ntlmssp.c:181]: state[3] error[-7963671676338569107 (0x917B5ACDC000006D)]  state[struct gensec_ntlmssp_update_state (0x55ad6e4ab810)] timer[(nil)] finish[../auth/ntlmssp/ntlmssp.c:239]
 gensec_update_done: spnego[0x55ad6e4aaf00]: NT_STATUS_LOGON_FAILURE tevent_req[0x55ad6e4ac860/../auth/gensec/spnego.c:1601]: state[3] error[-7963671676338569107 (0x917B5ACDC000006D)]  state[struct gensec_spnego_update_state (0x55ad6e4ac9f0)] timer[(nil)] finish[../auth/gensec/spnego.c:2065]

ここで奇妙なことは「workstation = []」です。 WindowsおよびMacクライアントの場合は常に括弧内にワークステーション名を含めますが、Linuxクライアントの場合は何も含めません。

認証_監査:

 Auth: [SMB2,(null)] user [DOMAIN]\[user] at [Wed, 17 Apr 2019 07:54:56.191467 CEST] with [NTLMv2] status [NT_STATUS_LOGON_FAILURE] workstation [] remote host [ipv4:xxx.xxx.xxx.xxx:57124] mapped to [DOMAIN]\[user]. local host [ipv4:xxx.xxx.xxx.xxx:445]

中小企業2:

 Selected protocol SMB3_11
 smbd_smb2_request_done_ex: idx[1] status[NT_STATUS_OK] body[64] dyn[yes:156] at ../source3/smbd/smb2_negprot.c:662
 smbd_smb2_request idx[1] of 5 vectors
 smbd_smb2_request_dispatch: opcode[SMB2_OP_SESSSETUP] mid = 1
 smbd_smb2_request_done_ex: idx[1] status[NT_STATUS_MORE_PROCESSING_REQUIRED] body[8] dyn[yes:194] at ../source3/smbd/smb2_sesssetup.c:174
 smbd_smb2_request idx[1] of 5 vectors
 smbd_smb2_request_dispatch: opcode[SMB2_OP_SESSSETUP] mid = 2
 smbd_smb2_request_error_ex: smbd_smb2_request_error_ex: idx[1] status[NT_STATUS_LOGON_FAILURE] || at ../source3/smbd/smb2_sesssetup.c:137
 smbd_smb2_request_done_ex: idx[1] status[NT_STATUS_LOGON_FAILURE] body[8] dyn[yes:1] at ../source3/smbd/smb2_server.c:3219
 smbd_server_connection_terminate_ex: conn[ipv4:xxx.xxx.xxx.xxx:57054] reason[NT_STATUS_END_OF_FILE] at ../source3/smbd/smb2_server.c:3986

私のLinuxクライアントでは、私のActiveDirectory資格情報を使用してSSHを介してサーバーに接続できます。

私は本当に何をすべきかわかりません。

アップデート1

この共有に接続すると、ドメインコントローラは自分のログイン要求を受け取り、パスワードを受け入れます。その場合、問題はこちらにありません。また、マウントオプションにuid =(id from my account、0、root)を追加しようとしましたが、成功しませんでした。

アップデート2

kinitを使用してKerberosチケットを作成し、sec=krb5マウントオプションを追加したら、この共有をマウントできます。ないよりも良いのになぜでしょうか? !

アップデート3

さて、すべての文書を読んだ後にActive DirectoryとKerberosを認証する唯一の解決策は、まずkinitを使用してkrbチケットを作成し、次を使用して共有をマウントするようです。-o秒= krb5オプション。私は正直なところ、なぜLinuxがこれをしてOSXをしないのか理解していません。しかし、とにかく...今すぐ他の解決策はありません...

ベストアンサー1

SMB共有をマウントするのに役立つこの記事を見つけました。

https://askubuntu.com/questions/1026316/cifs-mounts-and-kerberos-permissions-on-access-or-best-practice

私はこの問題がKerberosに関連していると考えており、Sebastian Starkは私が言うことをよく説明しました。

おすすめ記事