如果/etc/nsswitch.conf有:
passwd: files ldap这一行,我做了getent passwd,它会先运行/etc/passwd列表,然后遍历LDAP中的每个用户吗?事情似乎就是这样。
我在Red服务器上试用了它,当/etc/passwd只有36行时,它正在滚动数千行。
发布于 2014-12-06 15:38:44
getent将为指定的“数据库”返回任何结果。它根据/etc/nsswitch.conf的内容确定在构建此“数据库”时使用的后端。
getent在查询它的使用页面getent --help时列出了它的“数据库”。
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显示的内容。
发布于 2013-12-12 20:46:37
是的,如果您只说getent passwd,它将列出它可以在nsswitch中列出的任何数据库中找到的所有用户。
https://unix.stackexchange.com/questions/104905
复制相似问题