6.8 登录账户记录
6.8 登录账户记录
大多数Unix系统都提供下列两个数据文件:utmp文件,它记录当前登录进系统的各个用户;wtmp文件,它跟踪各个登录和注销事件。在Version7中,一个包含下列结构的二进制记录写入这两个文件中:
struct utmp {
char ut_line[8]; /* tty line: "ttyh0", "ttyd0", "ttyp0", ... */
char ut_name[8]; /* login name */
long ut_time; /* seconds since Epoch */
};
在登录时,login程序填写这样的一个结构,然后将其写入到utmp文件中,同时也将其添写到wtmp文件中。在注销时,init进程在utmp文件中的相应记录擦除(每个字节都填以0),并将一个新记录添写到wtmp文件中。读wtmp文件中的该注销记录,其ut_name字段清除为0。在系统再启动时,以及更改系统时间和日期的前后,都在wtmp文件中添写特殊的记录项。who(1)程序读utmp文件,并以可读格式打印其内容。后来的Unix版本提供last(1)命令,它读wtmp文件并打印所选择的记录。
大多数Unix版本仍提供utmp和wtmp文件,但在这些文件中的信息量却增加了。version 7中20字节的结构在SVR2中已扩充为36字节,而在SVR4中,utmp结构已扩充为350字节。