组数据库的 [Succes=return] 中必须添加到 nsswitch.conf 中的内容

组数据库的 [Succes=return] 中必须添加到 nsswitch.conf 中的内容

在使用 GlibC 2.17 的 CentOS 机器上工作时,我正在努力寻找一种禁用远程目录上本地用户组查找的配置。

我知道组查找的设计是搜索所有目录,但我认为添加group: file [SUCCESS=return]可以解决这个问题。

但看起来,事实并非如此:(

然后我想也许initgroups可以提供帮助,但似乎不起作用initgroups: files [SUCCESS=return] nis ldap

我的nsswitch.conf

passwd:     compat ldap
shadow:     files
group:      files nis ldap
hosts:      files dns nis
protocols:  files
rpc:        files
services:   files
initgroups: files [SUCCESS=return] nis ldap

internal_getgrouplist这是glibc函数的代码片段

 80   if (__nss_initgroups_database == NULL)
 81     {
 82       if (__nss_database_lookup2 ("initgroups", NULL, "",
 83   &__nss_initgroups_database) < 0)
 84 {
 85   if (__nss_group_database == NULL)
 86     no_more = __nss_database_lookup2 ("group", NULL, DEFAULT_CONFIG,
 87       &__nss_group_database);
 88
 89   __nss_initgroups_database = __nss_group_database;
 90 }
 91       else
 92 use_initgroups_entry = true;
 93     }
...
133       /* For compatibility reason we will continue to look for more
134    entries using the next service even though data has already
135    been found if the nsswitch.conf file contained only a 'groups'
136    line and no 'initgroups' line.  If the latter is available
137    we always respect the status.  This means that the default
138    for successful lookups is to return.  */
139       if ((use_initgroups_entry || status != NSS_STATUS_SUCCESS)
140     && nss_next_action (nip, status) == NSS_ACTION_RETURN)
141    break;
142
143       if (nip->next == NULL)
144   no_more = -1;
145       else
146   nip = nip->next;
147     }

看起来它应该尊重initgroups配置,但事实似乎并非如此。我尝试从 nsswitch.conf 中完全删除,group:但没有成功。id本地用户的命令仍然挂起

有什么办法可以绕过这个吗?

就我而言,如果远程目录端口被阻止或远程目录响应缓慢,则执行查找的服务将完全挂起。我们的产品附带默认的 nsswitch.conf,最终用户无法配置。

由于组查找转到此远程查找服务,本地用户也无法登录

相关内容