[读书笔记] APUE | 第六章 | 系统数据文件和信息

1.口令文件

  • 口令文件存储在/etc/passwd文件中
  • root用户的ID为0
  • 两个获取口令文件项的函数
struct passwd *getpwnam(const char *name)struct passwd *getpwuid(uid_t uid);

getpwuid函数是将i节点中的用户ID映射为用户登录名。

2. 阴影口令

  • 系统的加密口令一般存放在,阴影口令文件里,它至少存储了用户名和加密口令,其他文件信息也可以存放,用下面的函数可以获取阴影口令文件
 #include <shadow.h>
struct spwd *getspnam(const char *name);
struct spwd *getspent(void)

3. 组文件

uinx下的组文件包含信息定义在grp.h下的group结构体

 char   *gr_name The name of the group.
 gid_t   gr_gid  Numerical group ID.
 char  **gr_mem  Pointer to a null-terminated array of character
                              pointers to member names.

字段gr_mem是一个指针数组,其中每个指针指向一个属于该组的用户名,以空指针结尾

4. 其他数据文件

除了上述的组文件、口令文件,系统中还有其他数据文件,它们的接口和上面的很类似,一般情况下,每个数据文件至少有三个函数:

  • get函数 : 读下一个记录,如果需要,还可以打开文件,通常返回一个指向结构的指针。
  • set函数: 打卡数据文件
  • end函数: 关闭相应数据文件

5. 登录账户记录

unix系统通常提供两个文件:utmp文件,记录当前登录系统的各个用户,wtmp文件,跟踪各个登录和注销事件。
登陆时,login程序将信息写进utmp和wtmp文件中,注销时,init进程将utmp文件的记录清除,并将一个新纪录写到wtmp文件中,在wtmp文件的注销记录中,将ut_name字段清0。

6. 系统标识

POSIX.1 定义了uname函数,它可以返回当前主机和操作系统的信息:

 #include <sys/utsname.h>
 int uname(struct utsname *buf);

当然uname命令也可以查看,utsname结构体提供了以下字段:

struct utsname {
     char sysname[];    /* Operating system name (e.g., "Linux") */
     char nodename[];   /* Name within "some implementation-defined
                                     network" */
     char release[];    /* Operating system release (e.g., "2.6.28") */
     char version[];    /* Operating system version */
     char machine[];    /* Hardware identifier */
  };

每个字符串都以null结尾。

7. 时间和日期

用下面的函数获取时间日期

 #include <time.h>
 time_t time(time_t *t);

除此之外,uinx系统还提供了更高精度的时间,比如微秒,当获取时间后,它需要转化为人们可读的时间格式,以下是它的调用过程:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值