ArchLinux 上的 OpenLDAP 用户无法更改密码

ArchLinux 上的 OpenLDAP 用户无法更改密码

我创办了一家办公室,我需要集中登录和主目录才能工作。由于所有工作站都将运行 Arch,并且不同 LDAP 版本存在问题,我最终得出结论,LDAP 服务器也需要 Arch。

我在服务器和工作站上完全全新安装了 Arch。两者都安装了 Arch 的“base”和“base-devel”软件包组、NTP、OpenSSH 和 OpenLDAP,服务器还安装了 nss-pam-ldapd。现在基本就是这样了。

  1. 我已经关注https://wiki.archlinux.org/index.php/OpenLDAP但必须以不同的方式做以下事情(并且我尚未设置 SSL 或 TLS):
    • 在复制 DB_CONFIG.example 之前,我运行了 updatedb,并使用了locate DB_CONFIG
    • 我必须使用 -u 选项运行 slaptest 来抑制数据库警告
    • 运行 slaptest 后,我​​在 /etc/openldap/slap.d 上执行了 chown -R ldap:ldap
    • systemctl start slapd 失败,sudo slapd -u ldap -g ldap 也失败,但 sudo slapd 可以工作。
    • 运行 sudo slapd 后,我终止了 slapd 并 chown -R ldap:ldap /var/lib/openldap 但 systemctl start slapd 仍然失败。
    • chown -R ldap:ldap /etc/openldap 之后,我终于可以使用 systemctl start slapd... 我认为它是在使用 ldap 用户启动时 ldap 无法读取的架构文件夹。
  2. 已关注https://wiki.archlinux.org/index.php/LDAP_Authentication
    • 我没有启动或启用 nscd
  3. 我现在可以使用工作站上的 LDAP 用户正常登录,并且可以使用我的 rootdn 更新目录。

问题:用户无法使用 passwd 更改密码。LPAD 返回:

password change failed: Insufficient access

/etc/slapd.conf(在服务器上):

include     /etc/openldap/schema/core.schema
include     /etc/openldap/schema/cosine.schema
include     /etc/openldap/schema/inetorgperson.schema
include     /etc/openldap/schema/nis.schema
pidfile     /run/openldap/slapd.pid
argsfile    /run/openldap/slapd.args
access to attrs=userPassword
    by self write
    by anonymous auth
    by * none
access to *
    by self write
    by * read
database    bdb
suffix      "dc=testing,dc=com"
rootdn      "cn=Manager,dc=testing,dc=com"
rootpw      {SSHA}ntsD5qrvHJtMflarQPhJzapiEEnqH2/L
directory   /var/lib/openldap/openldap-data
index   objectClass eq
index   uid             pres,eq
index   mail            pres,sub,eq
index   cn              pres,sub,eq
index   sn              pres,sub,eq
index   dc              eq

/etc/openldap/ldap.conf(在客户端上):

BASE   dc=testing,dc=com
URI    ldap://192.168.1.50

/etc/nslcd.conf(在客户端上):

uid nslcd
gid nslcd
uri ldap://192.168.1.50/
base dc=testing,dc=com

/etc/pam.d/system-auth(在客户端上):

auth      sufficient  pam_ldap.so
auth      required  pam_unix.so     try_first_pass nullok
auth      optional  pam_permit.so
auth      required  pam_env.so
account   sufficient  pam_ldap.so
account   required  pam_unix.so
account   optional  pam_permit.so
account   required  pam_time.so
password  sufficient  pam_ldap.so
password  required  pam_unix.so     try_first_pass nullok sha512 shadow
password  optional  pam_permit.so
session   required  pam_limits.so
session   required  pam_unix.so
session   optional  pam_ldap.so
session   optional  pam_permit.so

/etc/pam.d/passwd(在客户端):

password    sufficient  pam_ldap.so
password    required    pam_unix.so sha512 shadow nullok

最后,我的问题是:

  1. 首先,哪里是阅读这类资料的最佳地点?
  2. 其次,我该如何自我调试?Arch 使用 systemd,基于 systemd 的系统的 syslog 在哪里?
  3. mlocate 包与 updatedb 和 allocate 有什么关系?我需要使用它吗?archwiki 中没有提到它,但在很多其他地方提到过。
  4. 实际问题是:为什么我的用户不能用 passwd 更改密码

答案1

在客户端上你必须取消注释/etc/nslcd.conf像这样 :

rootpwmoddn cn=admin,dc=example,dc=com

并将 cn 和 dc 更改为根域名slapd配置文件在服务器上

相关内容