本文是笔者拜读《UNIX环境高级编程》第6章(系统数据文件和信息)的学习笔记。
口令文件
UNIX
系统口令是/etc/passwd
,文件包含了各种字段,如用户名、加密口令、数值用户ID
、数值组ID
、注释字段、初始工作目录、初始shell
(用户程序)等。这些字段包含在<pwd.h>
中定义的passwd
结构中。
为了安全性考虑,加密口令字段只包含了一个占位符,真正的加密口令存放在另一个文件中。
空白的注释字段不产生任何影响。
POSIX
定义了两个获取口令文件项的函数。在给出用户登录名或数值用户ID
后,这两个函数就能查看相关项。
这两个函数都返回一个指向passwd
结构的指针,该结构已由这两个函数在执行时填入信息,passwd
结构通常是函数内部的静态变量,只要调用任一相关函数,其内容就会被重写。
getpwuid
函数由ls
程序使用,它将i
节点中的数字用户ID
映射为用户登录名。在键入登录名时,getpwnam
函数由login
程序使用。
getpwent
函数可以查看整个口令文件。该函数返回口令文件中下一个记录项的指针,如果出错或达到文件末尾,返回NULL
。
在使用getpwent
查看完口令文件前,一定要调用setpwent
定位到文件的开始处。在使用getpwent
查看完口令文件后,一定要调用endpwent
关闭这些文件。
阴影口令
某些系统将加密口令存放在称为阴影口令的文件中,