NSS支持的数据库

原创
2019/11/12 22:57
阅读数 179

NSS,简写自Name Service Switch。我把它译为“名字服务中心”。

在*nix操作系统中,NSS是C语言库(Library C或者glibc)的一部分,用以寻找名字。比如说,我们运行ls -lh查看一个目录中的文件列表,可以看到各文件的用户和用户组,如下图中的root用户和root用户组。实际上,系统中保存的只是它们的数字ID。而显示时必须将其字符或字符加数字形式,就得NSS来帮助查找。

我们使用glibc NSS,可以通过/etc/nsswitch.conf来设定各种名称的访问方法,即主机名、用户名、组名等

drwxr-xr-x. 2 root root    6 Nov 11 22:36 Desktop
drwxr-xr-x. 2 root root    6 Nov 11 22:36 Documents
drwxr-xr-x. 2 root root    6 Nov 11 22:36 Downloads
drwxr-xr-x. 2 root root    6 Nov 11 22:36 Music
drwxr-xr-x. 2 root root    6 Nov 11 22:36 Pictures
drwxr-xr-x. 2 root root    6 Nov 11 22:36 Public
drwxr-xr-x. 2 root root    6 Nov 11 22:36 Templates
-rwxr-xr-x. 1 root root  616 Oct 10 07:44 test.sh
-rw-r--r--. 1 root root   67 Oct 10 17:22 totalScore
drwxr-xr-x. 2 root root    6 Nov 11 22:36 Videos

在NSS问世之前,C语言库使用文件来寻找各种对象的名称,如/etc/passwd。后来,参照SUN公司Solaris 2中的处理方法,NSS应运而生。其基本思想是:让不同的服务访问不同的数据库。这样做有三个明显的好处:

1、新加入的服务无须将其数据添加到C语言库

2、各模块可以单独更新

3、C语言库不会变得雍肿

glibc NSS支持的数据库列表如下:
aliases,邮件的别名
ethers,以太网的IP
group,用户组数据库,大多数的操作系统上,保存在/etc/group
hosts,主机名和IP地址,大多数操作系统上,保存在/etc/hosts
netgroup,网络范围内的主机名和用户名
networks,网络名称和IP,大多数操作系统上,保存在/etc/networks
protocols,网络协议,如保存在/etc/protocols
passwd,用户名称,如保存在/etc/shadow
rpc,远程进程名称和地址
services,网络服务,如/etc/services
shadow,密码,如/etc/shadow

 

 

参考网址:

https://www.gnu.org/software/libc/manual/html_node/Name-Service-Switch.html

https://beeznest.wordpress.com/tag/name-service-switch/

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部