我们使用 Puppet 来管理我们的 Linux 台式机,并使用 SSSD 来根据中央身份验证系统对我们的用户进行身份验证。最近在安装几台新机器的时候发现puppet在安装软件包的时候就卡住了。罪魁祸首是 kdm 包,它试图在最近将“kdm”用户名添加到中央机构时添加本地“kdm”用户。
通常我看到这个问题是用命名空间划分机制(例如 Windows 域)处理的,但是我在 Linux 管理方面的时间很短,并没有真正帮助我找到一个好的方法来做到这一点。
我可以想出一些关于如何解决这个问题的一般想法(从最优雅到最不优雅):
当然,(2) 和 (3) 并不能解决根本问题,但是如果 (1) 中的解决方案对我们当前的设置特别有害,那么 (2) 或 (3) 之类的方法可能更可取.
我有一个连接到我的 LDAP 服务器的 CoreOS 服务器。使用id和ldapsearch命令后,我得到了正确答案。但是,我仍然无法使用 SSH 登录。
我可以在 sssd_LDAP.log 文件中看到服务器已收到以用户 (my_user) 登录的请求,但该请求被拒绝。
tail -f /var/log/sssd/sssd_LDAP.log
(Sun Nov 13 15:06:29 2016) [sssd[be[LDAP]]] [acctinfo_callback] (0x0100): Request processed. Returned 0,0,Success (Success)
(Sun Nov 13 15:06:49 2016) [sssd[be[LDAP]]] [be_get_account_info] (0x0200): Got request for [0x1003][FAST BE_REQ_INITGROUPS][1][name=etcd]
(Sun Nov 13 15:06:49 2016) [sssd[be[LDAP]]] [sysdb_get_real_name] (0x0040): Cannot find user [etcd] in cache
(Sun Nov 13 15:06:49 2016) [sssd[be[LDAP]]] [acctinfo_callback] (0x0100): Request processed. Returned 0,0,Success (Success)
(Sun Nov 13 15:07:10 2016) [sssd[be[LDAP]]] [be_get_account_info] (0x0200): …Run Code Online (Sandbox Code Playgroud) 我继承了许多带有 Centos 的 EC2 实例,这些实例通过 LDAP 针对 AWS Directory Service 对用户进行身份验证。现在我需要ldapsearch使用相同的帐户运行一些手动查询来调试一些身份验证问题。但是密码在配置中加密,如下所示:
[sssd]
domains = LDAP
services = nss, pam
[domain/LDAP]
id_provider = ldap
cache_credentials = True
ldap_schema = AD
ldap_uri = ldaps://...
ldap_search_base = ...
ldap_default_bind_dn = ...
ldap_default_authtok = AAAQAB3QDeZ7+...cBSpT0ZABu4AAQID
ldap_default_authtok_type = obfuscated_password
Run Code Online (Sandbox Code Playgroud)
有没有办法解密/去混淆ldap_default_authtok?我不想在 AD 中更改它,因为它已在许多服务器上使用。
我正在尝试使用 sssd 进行 LDAP 身份验证,虽然它可以使用命令显示用户 ID id,getent group但getent passwd不显示 LDAP 名称,虽然我可以将文件 chown 给 ldap 用户,但它们ls -lah作为nobody.
经过一番挖掘,我发现了一个提示:匿名绑定 LDAP 时可能会出现此问题。
但是当我设置 sss 时,没有提供绑定 DN 或密码的选项。我也无法在手册中找到正确的指令。
在哪里指定 sss+ldap 的绑定 DN 和密码?它进去了吗/etc/sssd/sssd.conf?或者另一个文件?
尝试将 SciLinux 7.1 (EL7.1) 盒子加入在 Windows 2008R2 64 位上运行的 AD 域。
遵循 Red Hat Enterprise Linux 7 Windows 集成指南:
$ sudo realm discover -v mems.local
* Resolving: _ldap._tcp.mems.local
* Resolving: mems.local
! Discovery timed out after 15 seconds
mems.local
type: kerberos
realm-name: MEMS.LOCAL
domain-name: mems.local
configured: no
Run Code Online (Sandbox Code Playgroud)
然而:
$ nslookup -type=srv _ldap._tcp.mems.local
Server: 172.17.21.20
Address: 172.17.21.20#53
_ldap._tcp.mems.local service = 0 100 389 mwinds2.mems.local.
_ldap._tcp.mems.local service = 0 100 389 mwinds1.mems.local.
Run Code Online (Sandbox Code Playgroud)
现在我该怎么做?
# realm join mems.local
See: journalctl REALMD_OPERATION=r1063.5453
realm: Cannot …Run Code Online (Sandbox Code Playgroud) 使用以下命令将机器加入域时遇到问题。服务器的操作系统为 Almazon Linux 2 服务器,必须加入 example.com。
我已经完成了 Li 的域加入过程所需的所有先决条件 下面是我尝试过的命令。
sudo realm join -U <username>@example.com dc01.example.com -v
Run Code Online (Sandbox Code Playgroud)
开/关:
Could not get kerberos ticket: KDC reply did not match expectations
Run Code Online (Sandbox Code Playgroud) 我错误地删除了/var/lib/sss/db/config.ldb 。现在,当我尝试启动 SSSD 时,出现以下错误:
(Wed Nov 23 11:40:36:059914 2016) [sssd] [check_file] (0x0400): lstat for [/var/run/nscd/socket] failed: [2][No such file or directory].
(Wed Nov 23 11:40:36:061661 2016) [sssd] [ldb] (0x0400): ltdb: tdb(/var/lib/sss/db/config.ldb): tdb_open_ex: could not open file /var/lib/sss/db/config.ldb: No such file or directory
(Wed Nov 23 11:40:36:061686 2016) [sssd] [ldb] (0x0020): Unable to open tdb '/var/lib/sss/db/config.ldb': No such file or directory
(Wed Nov 23 11:40:36:061699 2016) [sssd] [ldb] (0x0020): Failed to connect to '/var/lib/sss/db/config.ldb' with backend 'tdb': Unable to …Run Code Online (Sandbox Code Playgroud) /etc/sssd/sssd.conf如果变量未在 LDAP 中定义,应如何将文件配置为使用 LDAP 中定义的外壳程序和默认外壳程序?