在项目中,有个需求是将某些用户与普通用户的密码分开存放,三权用户存到/etc/sdtmp,普通用户存到默认的/etc/shadow文件,这样的话就需要修改相应的接口支持从/etc/sdtmp文件中获取三权用户的密码。
glibc库中提供了getspnam、getspent等相关的函数,这些函数默认是去/etc/shadow文件中读取struct spwd结构,所以需要增加getsptmpnam以及getsptmpent等相关的接口去/etc/sdtmp文件中读取struct spwd结构。
增加接口的C文件后,将接口添加到相应的头文件,编译安装glibc。之后,编写个简单的C程序实验发现新增接口无法使用,说明接口没有添加成功。
上网查了一下,还要修改Versions文件和sysdeps/unix/sysv/linux/x86_64/x64/nptl/libc.abilist文件,将增加的接口添加到这些文件里,编译安装glibc就可以使用增加的接口了。