您的位置:首页 > 运维架构 > Linux

linux /etc/passwd /etc/shadow /etc/group 详解

2017-05-04 11:06 567 查看
当我们执行
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐