首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当nsswitch设置为: files ldap时获取passwd

当nsswitch设置为: files ldap时获取passwd
EN

Unix & Linux用户
提问于 2013-12-12 17:57:29
回答 2查看 17.9K关注 0票数 2

如果/etc/nsswitch.conf有:

代码语言:javascript
复制
passwd:     files ldap

这一行,我做了getent passwd,它会先运行/etc/passwd列表,然后遍历LDAP中的每个用户吗?事情似乎就是这样。

我在Red服务器上试用了它,当/etc/passwd只有36行时,它正在滚动数千行。

EN

回答 2

Unix & Linux用户

发布于 2014-12-06 15:38:44

getent将为指定的“数据库”返回任何结果。它根据/etc/nsswitch.conf的内容确定在构建此“数据库”时使用的后端。

getent在查询它的使用页面getent --help时列出了它的“数据库”。

代码语言:javascript
复制
Supported databases:
ahosts ahostsv4 ahostsv6 aliases ethers group gshadow hosts initgroups
netgroup networks passwd protocols rpc services shadow

据我所知,没有办法禁用它为/etc/nsswitch.conf中配置的各种后端提供所有结果的行为。

getent/etc/nsswitch.conf都是nss (名称服务交换机)的一部分。

摘自nss手册页

对从系统数据库(如密码或组数据库)检索数据的函数的每次调用都由GNU C库中的Name Service开关实现处理。所提供的各种服务是由独立的模块实施的,每个模块之间的差别很大。默认情况下,GNU库附带的默认实现是保守的,不使用不安全的数据。在某些情况下,这可能是非常昂贵的,特别是当数据库很大时。有些模块允许系统管理员在已知安全的情况下请求采取快捷方式。那么,系统管理员就有责任确保假设是正确的。还有其他模块的实现随着时间的推移而改变。如果一个用于牺牲内存消耗速度的实现,如果切换了首选项,它可能会产生问题。

后端

这里有各种各样的东西,太多了。但是可以说,有一些后端,例如sssd (sss/LDAP)、NIS和NIS+等等。

因此,取决于您的系统在/etc/nsswitch.conf文件中指定了什么,将影响在查询给定的“数据库”(如getent passwd )时输出getent显示的内容。

参考资料

票数 2
EN

Unix & Linux用户

发布于 2013-12-12 20:46:37

是的,如果您只说getent passwd,它将列出它可以在nsswitch中列出的任何数据库中找到的所有用户。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/104905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档