Samba AD 无法在 Linux 客户端上登录域用户

Samba AD 无法在 Linux 客户端上登录域用户

过去两周我正在尝试使用 Samba 作为我的家庭网络中的活动目录控制器。

我按照一些指南和视频在 ubuntu 服务器 22.04 上安装了 samba,但是这一页涵盖了大部分内容。我能够将 Windows 和 Linux 计算机加入域。我可以使用 列出已加入的计算机samba-tool computer list

我使用 samba 工具成功创建了用户和组。我可以从 Windows 客户端使用这些帐户登录。

从 linux(ubuntu 23.04 和 23.10)我可以加入域关注ubuntu官方文档,但我无法登录。

bp@bas-hp:samba (master) % sudo login                   
bas-hp login: [email protected]
Password: 

Login incorrect
bas-hp login: [email protected]
Password: 

Login incorrect

我能够创建 kerberos 票证

bp@bas-hp:samba (master) % klist           
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: [email protected]

Valid starting     Expires            Service principal
16-04-24 22:26:57  17-04-24 08:26:57  krbtgt/[email protected]
    renew until 17-04-24 22:26:53

我尝试遵循的文档中的测试部分的结果似乎开始良好:

bp@legion-ubuntu:~ % getent passwd [email protected]
[email protected]:*:1494001108:1494000513:Bas Prins:/home/[email protected]:/bin/bash
bp@legion-ubuntu:~ % getent passwd [email protected] 
[email protected]:*:1494001104:1494000513:bp:/home/[email protected]:/bin/bash

但是当我发出命令时,groups我确实看到了一些有关的结果

bp@legion-ubuntu:~ % groups [email protected]       
[email protected] : domain [email protected] denied rodc password replication [email protected] [email protected] enterprise [email protected] domain [email protected]
bp@legion-ubuntu:~ % groups [email protected]
[email protected] : domain [email protected] denied rodc password replication [email protected] [email protected] enterprise [email protected] domain [email protected]

当“拒绝 rodc 密码复制”意味着以及我是否/如何需要解决该问题时,我会同时进行谷歌搜索。


完整的 sssd.conf

[sssd]
domains = sb.lan
config_file_version = 2
services = nss, pam

[domain/sb.lan]
default_shell = /bin/bash
krb5_store_password_if_offline = True
cache_credentials = True
krb5_realm = SB.LAN
realmd_tags = manages-system joined-with-adcli
id_provider = ad
fallback_homedir = /home/%u@%d
ad_domain = sb.lan
use_fully_qualified_names = True
ldap_id_mapping = True
access_provider = ad
timeout = 20
ldap_uri = ldap://dc.sb.lan
ldap_search_base = dc=sb,dc=lan
auth_provider = krb5
krb5_server = dc.sb.lan
krb5_passwd = dc.sb.lan
krb5_validate = True

我希望对 samba/AD 有更多了解的人可以给我一些如何最好地解决这个问题的建议。我可以使用哪些工具来深入了解根本原因?

更新2

在 ubuntu 客户端计算机上的 sssd.conf 中添加以下行后

ad_gpo_access_control = permissive

我终于可以通过命令行登录了sudo login。但是,不幸的是,成功登录后,它尝试下载我认为的策略,但失败了。

Last login: Wed Apr 17 14:15:01 CEST 2024 on pts/2
Applying machine settings
ERROR Error from server: error while updating policy: can't get policies for "legion-ubuntu": failed to retrieve the list of GPO (exited with 1): exit status 1
Failed to bind - LDAP client internal error: NT_STATUS_INVALID_PARAMETER
Failed to connect to 'ldap://dc.sb.lan' with backend 'ldap': LDAP client internal error: NT_STATUS_INVALID_PARAMETER
Failed to open session: (1, 'LDAP client internal error: NT_STATUS_INVALID_PARAMETER') 

Failure setting user credentials

我正在同时解决这个问题,当然希望有人能告诉我在哪里修复什么;-)。如果我能自己解决这个问题,我会更新问题。

答案1

在我的客户端 PC 上重新安装 ubuntu 并再次检查所有步骤后,我成功解决了该问题。我现在可以登录我的 samba AD 服务器。

我必须做的两件事与官方文档有所不同:

  • 加入前修复 krb5.conf
  • 加入后,修补sssd.conf

第一步,我需要在 ubuntu 客户端上禁用 krb5 中的反向 dns。

[libdefaults]
    rdns = false

接下来,成功加入域后,sudo realm -v join <domain-name>我必须在 ubuntu 客户端上的 sssd.conf 中添加以下行

# THIS IS MANDATORY to fix "permission denied" when PAM tries to authenticate
# https://serverfault.com/questions/872542/debugging-sssd-login-pam-sss-system->
# suggested work around in question
ad_gpo_access_control = permissive

一旦我这样做了,并重新启动 sssd

sudo systemctl restart sssd

我可以登录

bp@legion-ubuntu:~ % sudo login                   
legion-ubuntu.sb.lan login: SB\bp
Password: 
Welcome to Ubuntu 23.04 (GNU/Linux 6.2.0-37-generic x86_64)

不再出现错误。当我注销本地用户时,我终于可以以 AD 用户身份登录

相关内容