当我们执行ll或者ls -l时将会得到文件拥有者和文件拥有者所在的组信息
代码中可以通过getpwuid将文件的uid和和文件拥有者的name关联起来。
可以先回顾ls -l的源码过程 ls -l 刨丁解牛
1.通过DIR *和strcut direntp拿到目录信息
DIR * dir_ptr; struct dirent *direntp; dir_ptr=opendir(dirname); while(direntp=readdir(dir_ptr)!=NULL) { direntp->d_name; }2.使用stat分析文件信息
在struct stat的结构体中主要关注两个字段,uid和gid 一个是文件的拥有者的user id一个是文件拥有者所在组的group id 通过调用getpwuid和getgrgid来分别获得id对应的名字
struct passwd* pw_ptr; pw_ptr=getpwuid(uid); pw_ptr->pw_name;而系统调用则通过/etc/passwd和/etc/group获得。
一般每一行包括如下内容:
用户名 加密口令:(也就是密码,用x占位) 数值用户ID:也就是uid 数值组ID:也就是gid 注释字段: 家目录 初始shell:一般是/bin/bash
代码中用struct passwd包含
/etc/group中则包含数据如下:
组名 加密口令:用x占位 数值组ID 指向各用户名指针的数组
对于用户密码来说,出于安全考虑,肯定不会明文存放,因此,一般采用某些Hash算法对明文进行不可逆加密(如MD5或SHA-1) 这些加密过的密码就存放在/etc/shadow中
参考: apue forlinux.blog.51cto.com/8001278/1440088