Unix环境高级编程-系统数据文件和信息
来源:互联网 发布:淘宝外卖红包免费领取 编辑:程序博客网 时间:2024/05/17 01:35
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 //可以返回系统的版本信息和内核信息等
- linux系统数据文件和信息--unix环境高级编程读书笔记
- 《UNIX环境高级编程》--6系统数据文件和信息
- Unix环境高级编程-系统数据文件和信息
- 《UNIX环境高级编程》六系统数据文件和信息读书笔记
- unix高级环境编程 系统数据文件与信息 --chap6
- 《unix高级环境编程》系统数据文件和信息——时间和日期
- 《unix高级环境编程》系统数据文件和信息——时间和日期
- 读书笔记——《UNIX环境高级编程》第六章_系统数据文件和信息
- UNIX环境高级编程学习之第六章系统数据文件和信息-实现uid to name
- UNIX环境高级编程学习之第六章系统数据文件和信息-GID To GroupName
- unix高级环境编程 例子 代码实现练习 第六章:系统数据文件和信息
- 《UNIX环境高级编程》读书笔记之系统数据文件和信息(1)
- UNIX环境高级编程(第6章 系统数据文件和信息)
- 标准IO库、系统数据文件和信息 - UNIX环境高级编程-第5、6章
- 《unix高级环境编程》系统数据文件和信息——口令文件
- 《unix高级环境编程》系统数据文件和信息——组文件
- 《unix高级环境编程》系统数据文件和信息——口令文件
- 《unix高级环境编程》系统数据文件和信息——组文件
- iOS崩溃 捕获异常处理
- java可视化编程-eclipse安装windowbuilder插件
- VMware安装的ubuntu下配置java环境
- C语言合并数组
- vim常用命令
- Unix环境高级编程-系统数据文件和信息
- java web 问题汇总
- Ubuntu Linux设置Open Files Limit和Max User Processes
- 下载测试版本cocoa pods,不建议使用
- 关于ping公司内网服务器ip,间歇性丢包的解决方案
- 用Eclipse和QT来编译Snort
- 十三、redis特性操作
- Summer day 15
- crontab 每分钟、每小时、每天、每周、每月、每年定时执行