libnss-mysql有两个配置文件:

  • /etc/libnss-mysql.cfg
  • /etc/libnss-mysql-root.cfg

其官方对这两个文件的用途是有解释的。也许是我的英语阅读能力太差,反正越看解释越搞不清楚。

同时根据实际使用,感觉官方说的libnss-mysql-root.cfg这个文件需要有是错的,其实不要也可以。

今天在调试的时候遇到一个问题,才真正理解了。

libnss-mysql的日志保存在/var/log/user.log

如果普通用户调用libnss-mysql相关的接口(比如普通用户直接执行 id somebody 查看别的用户的基本信息)。起作用的是/etc/libnss-mysql.cfg这个文件,/etc/libnss-mysql-root.cfg这个文件是一点效果都没有的。

如果是root用户调用libnss-mysql相关的接口(如上例,另外很多系统服务都是用root身份调用的,比如pam)。这两个配置文件都起作用,并且libnss-mysql-root.cfg会覆盖掉libnss-mysql.cfg里的对应设置项。当然如果lib-mysql-root.cfg没有配置内容(空文件)或者干脆没有这个文件也是可以的。

这种机制的设置,根据作者的意思。是要保护一些root用户才能执行权限的程序。因为libnss-mysql-root.cfg建议设置的权限是仅root用户可读写。