LDAP 每用户覆盖

LDAP 每用户覆盖

我使用openldap+nslcd连接到 LDAP 服务器以对某些用户进行身份验证(这些用户希望他们的密码和大部分配置在许多设备上共享)。我不控制 LDAP 服务器。

但是,同步是在用户已经拥有双帐户之后进行的,因此主文件夹的名称不匹配(并且由于脚本中可能存在硬编码路径,因此移动它们是不明智的)。我正在考虑硬链接目录,但我想知道是否有办法覆盖特定用户的主文件夹,这看起来更干净,听起来应该是一个常见的用例。

让我感到不愉快的是,nslcd.conf似乎只接受一个过滤器(每个 map= passwd),并且map指令将简单地替换 home全部用户立即。

有没有办法在 LDAP 查找后优雅地“修复”单个条目?我的搜索大多遇到的答案替换了所有用户的模式,或者给出了无用的答案(例如这个它只是覆盖之前的过滤器)。

我认为我需要的是:

filter passwd (&(objectClass=inetOrgPerson)(<redacted>))
# the last part is wishful thinking, not actual syntax
map passwd homeDirectory "<redacted>" if (uid=<redacted>)

我是 LDAP 的新手,所以我可能不完全理解事务发生的顺序以及是 PAM 还是 nslcd 应该执行此操作。我意识到这不是正确处理这种情况的最佳方法,但我仍然想知道是否可以做到。

答案1

我认为你不能用以下方法实现单独的覆盖地图指令中nslcd.conf(5)。这样的映射应用于整个 passwd 映射。但是,根据模块名称的顺序,/etc/nsswitch.conf您可以设置本地密码具有不同主目录的条目在文件中具有更高的优先级/etc/密码

示例行/etc/nsswitch.conf

passwd: files ldap

确保其余属性保持一致!

IIRC 新版本固态硬盘有一个 CLI 工具sss_覆盖(8)它允许为某些用户设置单独的值。

但问问自己:你真的想维持这种混乱吗?

作为你,我首先会告诉用户他们应该$HOME在脚本中使用 env var 。

相关内容