unix口令文件/etc/passwd 包含了下表所示的字段:

系统定义了两个获取口令文件项的函数,在给出用户登录名或数值用户ID后,这两个函数能够查看相关项。

struct passwd *getpwuid(uid_t uid);

struct passwd *getpwnam (const char *name);

getpwuid函数由ls程序使用,将i节点中的数字用户ID映射为用户登陆名,在键入登录名时,getpwnam函数由login程序使用。

如果要查看的只是登录名或用户ID,这两个函数就能满足要求,但是有些程序要查看整个口令文件,下面三个函数可满足此要求:

调用getpwent,它返回口令文件的下一个记录项,也就是返回一个由他填好的passwd结构的指针。

函数setpwent反绕它所使用的文件,endpwent关闭这些文件,在使用getpwent查看完口令文件后,一定要调用endpwent关闭这些文件。

下列程序给出了getpwnam函数的一个实现

#include <pwd.h>
#include <stddef.h>
#include <string.h>struct passwd *getpwnam(const char *name)
{struct passwd *ptr;setpwent();while((ptr = getpwent())!= NULL)if(strcmp(name, ptr->pw_name)==0)break;   //found a matchendpwent();return(ptr);   //ptr is NULL if no match founc
}

在函数开始出调用setpwent是自我保护措施,以确保如果调用者在此之前已经调用getpwent打开了有关文件情况下,反绕有关文件使它们定位到文件开始处。

阴影口令:

加密口口令是经过单向加密算法处理过的用户口令副本,因为此算法是单向的,所以不能从加密口令猜测到原来的口令。但可以对口令进行猜测,将猜测的口令经算法变成加密形式,然后将其与原加密口令对比。

为防止这样,系统将加密口令放在另一个称为阴影口令的文件中(shadow password),该文件至少包含用户名和加密口令。

其他数据文件:

上面讨论了两个系统数据文件-口令文件和组文件,在日常中,Unix还使用其他文件,一般情况下,对于每个数据文件至少有3个函数:

1.get函数:读下一个记录,该函数一般返回指向一个结构的指针,当达到文件尾端时返回空指针

2.set函数,打开相应数据文件,然后反绕该文件,如果希望在文件起始开始处理,则调用此函数

3.end函数:关闭相应数据文件

下表示访问系统数据文件的一些例程

登陆账户记录:

大多数unix系统都提供两个数据文件,utmp文件记录当前登陆到系统的各个用户,wtmp文件跟踪各个登陆和注销事件,每次写入这两个文件中的是包含下列结构的一个二进制记录:

登陆时,login填写此类结构,然后将其写入到utmp文件中,同时页将其填写到wtmp文件中,注销时init进程将utmp文件相应记录删除。将一个新纪录填写到wtmp文件中。

系统标识:

命令 uname -a //可以返回系统的版本信息和内核信息等

Unix环境高级编程-系统数据文件和信息相关推荐

  1. UNIX环境高级编程——系统数据文件和信息

    6.1 引言 UNIX系统的正常运行需要使用大量与系统有关的数据文件,这些文件都是ASCII文本文件,并且使用标准I/O库读这些文件. 6.2 口令文件 UNIX口令文件是/etc/passwd,每一 ...

  2. (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  3. UNIX环境高级编程笔记之文件I/O

    一.总结 在写之前,先唠几句,<UNIX环境高级编程>,简称APUE,这本书简直是本神书,像我这种小白,基本上每看完一章都是"哇"这种很吃惊的表情.其实大概三年前,那会 ...

  4. 开发日记-20190827 关键词 读书笔记《Unix环境高级编程(第二版)》DAY 3

    Referred Blogs 文件描述符标志,文件状态标志 Linux中文件描述符fd和文件指针flip的理解 Linux编程–文件描述符fd 文件共享 Unix支持在不同进程间共享文件. 内核使用了 ...

  5. 《unix环境高级编程》笔记4——系统数据文件和信息

    文章目录 系统数据文件和信息 口令文件 获取口令文件 getwpuid getpwnam 阴影口令 组文件 附属组ID 查看附属组ID 其他文件 登录账户记录: 系统标识 uname gethostn ...

  6. 文件和目录(二)--unix环境高级编程读书笔记

    在linux中,文件的相关信息都记录在stat这个结构体中,文件长度是记录在stat的st_size成员中.对于普通文件,其长度可以为0,目录的长度一般为1024的倍数,这与linux文件系统中blo ...

  7. unix环境高级编程(上)-文件篇

    目录 前言 unix基础知识 unix标准化和实现 unix提供的文件IO 文件和目录 标准IO 系统数据文件 前言 笔者将<unix环境高级编程>主要内容总结为三篇:文件篇,进程篇,高级 ...

  8. 5w字总结 Unix系统编程学习笔记(面试向)(Unix环境高级编程/Unix环境程序设计)

    文章目录 一.计算 C语言的数据表示与处理 计算 C语言的基本运算操作 内存表和符号表 类型转换 函数类型的分析 指令 复合指令 句法 函数 函数激活(Activation Record) 函数激活定 ...

  9. unix环境高级编程 pdf_UNIX系统编程宝典,每一本都值得程序员珍藏

    这几本UNIX系统编程宝典,重印无数次,几代程序员都视如珍宝的几本书,小编在出版圈里快十年了,见证了这本书图灵版.异步社区版的出版.营销,对这套书倾注了一定的感情.今天继续分享给你们,好书总会有人还不 ...

最新文章

  1. Struts 2的输入校验(一)
  2. PL/SQL编程:用Loop-exit-when-end循环算出5的阶乘
  3. ROS2概述和实践入门
  4. 清华大学首批研究生学术与职业发展能力提升项目评估交流会举行
  5. 自己动手开发jQuery插件
  6. 你真的懂用户画像吗?
  7. java if语句选择题_选择语句(if else) 习题(2017/12/1)
  8. 全球及中国婴儿痤疮药行业消费需求调研与竞争策略展望报告2022版
  9. Winform中使用控件的Dock属性设计窗体布局,使不随窗体缩放而改变
  10. Nginx安装手冊以及图片server部署
  11. 三维重建1-位姿追踪:单应矩阵、本质矩阵和基本矩阵
  12. php kml文件解析,英语翻译中文:详细分析了KML、MapInfo文件及二者之间的联系,以KML点标记文件为例,基于PHP编程实现了KML到...
  13. 利用并查集判断一个无向图是否成树
  14. 每日面试之Java集合
  15. 警惕!这5种“脸色”在暗示你这些健康问题!
  16. 学习C语言,有哪些值得推荐的经典书籍?
  17. C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-上)
  18. 面试那些事儿- UI设计面试常见问题
  19. 【CSS选择器】CSS选择器有哪些?如何选择合适的使用?各类选择器的优劣势是什么?
  20. FHQ大战Splay

热门文章

  1. MongoDB,真的是正确的选择吗?
  2. iis发布mvc 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容.
  3. Ceph文件存储-挂载文件系统
  4. Mac安装AES加密模块pycrypto
  5. php 和 java 拿督,小编来科普 拿督威拉在马来西亚级别到底有多高
  6. 〖产品思维训练白宝书 - 产品思维认知篇④〗- 产品思维的核心要素
  7. cad转wmf格式,该如何转换呢?
  8. 千万别错过!11月8日将上演月全食,同时伴随月掩天王星的景观
  9. FFmpeg 开发(07):FFmpeg + OpenGLES 实现 3D 全景播放器
  10. A40I以太网ping延时很大的问题记录