广州C/C++培训
达内广州岗顶中心

18087159764

热门课程

C语言的口令文件

  • 时间:2017-01-09
  • 发布:广州C++培训
  • 来源:达内新闻

广州达内C++培训的小编发现UNIX口令文件包含在各个字段,

由于历史原因,口令文件是/bin/passwd,而且是一个文本文件,每一行都包括了上表中的七个字段,字段之间用":"分隔,例如一个文件中可能有以下三行:

root:jheVopR58x9Fx:0:1:The superuser:/:/bin/sh n o b o d y : * : 6 5 5 3 4 : 6 5 5 3 4 : : / : stevens:3hKVD8R58r9Fx:224:20:Richard Stevens:/home/stevens:/bin/ksh

对于这些登陆项需要注意以下几点:

加密口令字段是由单向不可逆算法加密产生的13个可打印字符(在64字符集中[a-zA-Z0-9./])。用nobody用户ID和组ID都是大家都可读写的文件

口令文件中某些字段可能是空,如果密码口令为空则说明用户没有口令。nobody用户有两个空字段:注释字段和初始shell字段,空注释字段不产生任何影响,空shell字段表示取系统默认值,一般是/bin/sh。

支持finger命令的某些系统支持注释字段中的附加信息,其中各部分之间用逗号分隔:用户姓名,用户地址,用户电话。如果注释字段中的用户姓名是"&",则它被替换为登陆名。例如可以有如下记录:

stevens:3hKVD8R58r9Fx:224:20:Richard &, B232, 555-1111, 555-2222: / h o m e / s t e v e n s : / b i n / k s h

POISX.1只定义了两个存取口令文件中信息的函数:参数为用户登录名或者是数值ID:

```

#include <sys/types.h>

#include

struct passwd getpwuid(uid_t uid);

struct passwd getpwnam(const char *name);

返回值:成功则为指针,出错为NULL

getpwuid由ls命令使用,用于从i节点中的数值用户ID获取用户登录名。getpwnam在输入登录名时由login程序使用。可用以下三个函数查看整个口令文件:

#include <sys/types.h>

#include

struct passwd *getpwent(void);

返回值:成功返回指针,出错或到达文件尾端返回NULL

void setpwent(void);

void endpwent(void);

```

调用getpwent时,返回口令文件中的下一个记录,它返回一个由它填写的passwd结构的指针,每次调用此函数都重写该结构。

setpwdent函数定位文件到开始处,endpwent关闭这些文件。再用getpwent查看完口令文件后一定要用endpwent关闭这些文件。getpwent函数并不知道何时关闭这些文件。

上一篇:C语言的输出数据表
下一篇:UNIX的组文件

无人零售策略发展情况

达内广州岗顶中心:马化腾4天减股套现17.75亿

2017产品经理的两个必答题

2大C语言扩展类制作步骤

选择城市和中心
贵州省

广西省

海南省