如何获取 MacOS 服务器用户的 LDAP 密码哈希?

如何获取 MacOS 服务器用户的 LDAP 密码哈希?

有没有办法获取名为 LDAP 用户的密码哈希,其中用户是在运行 OSX Sierra 和 MacOS Server 5.2 的 MacOS 服务器上的 Open Directory 中定义的?

我的用例:

我正在使用 Docker 容器中的 Jenkins 设置 CI/CD 节点,该容器将在运行 MacOS Server 的服务器上运行。我希望该 Jenkins 容器得到保护,并使用服务器的 LDAP 开放目录进行保护,即想要修改 Jenkins 配置的用户需要使用自己的网络用户/密码登录 Jenkins。

作为配置的一部分,我需要将 XML 文件 ( config.xml) 复制到 Jenkins 主目录中,并且该文件需要包含保护 LDAP 系统的用户的哈希密码。我认为密码哈希存储在加密目录中,因此我想知道如何检索它。

我希望整个部署脚本能够自动化,因此我需要能够为指定用户检索哈希(或重新创建它),以便可以将其注入到将放入 Jenkins 主目录的 XML 文件中。

答案1

听起来您的服务器也是一个开放目录主服务器(运行 slapd),如果是这种情况,则哈希值由密码服务器加密存储,并且实际上无法访问。

如果服务器不是 OD 主服务器,事情就简单多了,正如 @bourneN5years 提到的,使用 dscl 在默认节点中挖掘是一个开始。本地节点的文件可以在 /var/db/dslocal/nodes/Default 中找到

如果您可以让 jenkins 将登录信息传递给 Server 5.2 中的 auth webapp,它可能会更干净。

它应该提供 http 样式的身份验证http://本地主机:4444/auth 您可以直接使用以下命令启动它:

sudo webappctl start com.apple.webapp.auth

相关内容