linux etcpasswd etcshadow etcgroup 详解

xiaoxiao2021-02-27  310

当我们执行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

转载请注明原文地址: https://www.6miu.com/read-2484.html

最新回复(0)