使用getgrnam()仅查询本地组

时间:2015-12-09 16:23:53

标签: linux perl ldap

我正在尝试将独立产品集成到LDAP环境中。

我有一个RHEL 6.7系统配置为ldap身份验证(通过sss),我需要以编程方式将本地用户和组添加到。

输入xml文件包含一个用户和组列表,其中包含应该使用的组成员身份,登录shell,用户ID和组ID。

现在出现了问题,我有一个使用XML文件配置用户和组的Perl脚本,它使用getgrnam和getpwnam查询用户和组,然后对groupmod / groupadd和usermod / useradd进行系统调用如果用户存在与否。我发现如果LDAP的组名与我尝试创建的组的名称相同,则会将该组视为现有组,并跳转到groupmod而不是groupadd。然后,组二进制文件将仅对本地组执行操作,并且由于该组本地不存在而失败。 NSS设置为检查文件然后sss,这有意义为什么getgrnam返回ldap组。

有没有办法让getgrnam和getpwnam只查询本地系统而不必重新配置nsswitch.conf并且可能在运行脚本时停止/启动SSSD?

我是否可以使用另一个perl函数来查询本地用户/组?

1 个答案:

答案 0 :(得分:1)

简短回答是否定的 - 这些函数调用的目的是使身份验证机制透明。您可以使用各种各样的东西,并且没有人想要手动滚动他们自己的本地文件/ ldap / yp / nis + /任意PAM认证机制。

如果您 对本地passwdgroup文件的内容感兴趣,我建议答案是 - 直接阅读。