Unix系统数据文件

UNIX系统的正常运行需要使用大量与系统有关的数据文件,例如口令文件/etc/passwd、组文件/etc/group、网路服务/etc/services、协议信息/etc/protocols、网络信息/etc/networks、主机数据/etc/hosts等。下面主要说明一下口令文件。

口令文件——

UNIX系统的口令文件在Linux上可能有下面一行:

root:x:0:0:root:/root:/bin/bash

上面各字段以冒号分割,与“pwd.h”中定义的passwd结构对应:

/* The passwd structure.  */
struct passwd
{
  char *pw_name;                /* Username.  */
  char *pw_passwd;              /* Password.  */
  __uid_t pw_uid;               /* User ID.  */
  __gid_t pw_gid;               /* Group ID.  */
  char *pw_gecos;               /* Real name.  */
  char *pw_dir;                 /* Home directory.  */
  char *pw_shell;               /* Shell program.  */
};

加密口令字段包含了一个占位符x,在早期的UNIX系统版本中,该字段存放加密口令,将加密口令存放在一个人人可读的文件中构成了一个安全性漏洞,所以现在将加密口令存放在另一个位置,下文提到的阴影口令。

在某些系统上,查看口令文件可使用finger命令,编辑口令文件可使用vipw命令。

阴影口令——

加密口令是经单向加密算法处理过的用户口令副本,在某些系统上,加密口令存放在另一个通常称为阴影口令的文件/etc/shadow中,“shadow.h”中定义了对应的spwd结构:

/* Structure of the password file.  */
struct spwd
  {
    char *sp_namp;              /* Login name.  */
    char *sp_pwdp;              /* Encrypted password.  */
    long int sp_lstchg;         /* Date of last change.  */
    long int sp_min;            /* Minimum number of days between changes.  */
    long int sp_max;            /* Maximum number of days between changes.  */
    long int sp_warn;           /* Number of days to warn user to change
                                   the password.  */
    long int sp_inact;          /* Number of days the account may be
                                   inactive.  */
    long int sp_expire;         /* Number of days since 1970-01-01 until
                                   account expires.  */
    unsigned long int sp_flag;  /* Reserved.  */
  };

不同的类UNIX系统,存储加密口令的方式可能是不同的。

除了上文提到的数据文件,大多数UNIX系统还都提供了utmp和wtmp两个数据文件,前者记录当前登录进系统的各个用户,后者跟踪各个登录和注销事件。另外,系统标识信息、时间和日期数据也是必不可少的。

时间: 2024-10-09 20:36:45

Unix系统数据文件的相关文章

《UNIX环境高级编程》--6系统数据文件和信息

系统数据文件和信息 用户配置文件 1. /etc/passwd UNIX口令文件 /etc/passwd/是一个ASCII文件,每一行包含很多字段,字段之间用冒号分隔.这些字段包含在<pwd.h>头文件定义的passwd,该结构有如下成员: char *pw_name:用户名 char *pw_passwd:加密口令 uid_t pw_uid:数值用户ID gid_t pw_gid:数值组ID char *pw_gecos:注释字段 char *pw_dir:初始工作目录 char *pw_s

《UNIX环境高级编程》读书笔记之系统数据文件和信息(1)

1.UNIX系统口令文件包括了下图所看到的的各字段,这些字段包括在<pwd.h>中定义的passwd结构体中 POSIX定义了两个获取口令文件项的函数. 在给出用户登录名或用户ID后.这两个函数就能查看相关项. #include <pwd.h> struct passwd *getpwuid(uid_t uid); struct passwd *getpwnam(const char *name); 假设想要查看整个口令文件,则要用到以下三个函数: #include <pwd

Unix环境高级编程学习笔记(三):标准I/O , 系统数据文件和信息

1 标准I/O函数不同于read,write函数,是其在流上进行操作, 当首次调用标准I/O函数时,系统会首先调用malloc,为流创造缓冲区, 2 fopen函数 #include<stdio.h> file * fopen(const char* pathname, const char * restrict name); 打开返回指针,出错返回NULL, type的取指有r(读),w(写),a(追加),r+/w+(读+写),a+(读+写+追加) int fclose(file* fp)

APUE学习笔记(第六章 系统数据文件和信息)

UNIX系统的正常运作需要使用大量与系统有关的数据文件,例如,口令文件/etc/passwd和组文件/etc/group就是经常被多个程序频繁使用的两个文件. 口令文件 UNIX系统口令文件包含如下字段,这些字段包含在<pwd.h>中定义的passwd结构中 口令文件是/etc/passwd,每一行包含上面各字段,字段之间用冒号分隔.可以使用finger命令打印指定用户的有关信息:finger -p 用户名 POSIX.1定义了两个获取口令文件项的函数,在给定用户登录名或数值用户ID后,这两个

APUE学习笔记:第六章 系统数据文件和信息

6.1 引言 UNIX系统的正常运行需要使用大量与系统有关的数据文件,针对这些数据文件的可移植接口是本章的主题.本章还介绍了系统标识函数.时间和日期函数 6.2 口令文件 UNIX系统的口令文件包含了下列各字段,这些字段包含在<pwd.h>中定义的passwd结构中 用户名 char *pw_name 加密口令 char *pw_passwd 数值用户ID uid_t pw_uid 数值组ID gid_t pw_gid 注释字段 char *pw_gecos 初始工作目录 char *pw_d

系统数据文件和信息

系统正常运行需要使用大量系统数据文件,其中,所有UNIX系统都有的是:口令文件.组文件,大多数系统都提供的是:登录账户记录.系统标识.时间和日期例程,同时还有其他一些常用系统数据文件如:BSD网络软件有一个记录各网络服务器所提供服务的数据文件(/etc/services).记录协议住处的数据文件(etc/protocols)等. 1.口令文件 口令文件包括了以下字段,这些字段包含在<pwd.h>中定义的passwd结构中: struct passwd { char*  pw_name;    

第十四篇:获取系统数据文件信息

前言 在 Linux 中,系统数据文件大都不能直接用编辑的方式读取.如此设计一方面是从安全性考虑,另一方面则是从文件检索效率考虑.本文将以口令文件 passwd 为例讲解读取 Linux 中系统数据文件的方法. 基本步骤 1. 包含读写该系统数据文件的专用头文件 ( 如读写口令文件要包含 pwd.h 组文件则是 grp.h ) 2. 使用 set 函数打开文件        3. 使用 get 函数读取下一个记录        4. 使用 end 函数关闭此文件 另,如果数据文件支持某种形式的关

(四) 一起学 APUE 之 系统数据文件和信息

. . . . . 目录 (一) 一起学 APUE 之 标准 IO (二) 一起学 APUE 之 文件 IO (三) 一起学 APUE 之 文件和目录 (四) 一起学 APUE 之 系统数据文件和信息 1.getpwnam(3).getpwuid(3) 1 getpwnam, getpwuid - get password file entry 2 3 #include <sys/types.h> 4 #include <pwd.h> 5 6 struct passwd *getp

读书笔记-APUE第三版-(6)系统数据文件和信息

常见系统数据文件 下表列出了常见的系统数据文件及其查找函数. 以/etc/passwd文件为例,读取数据的程序基本框架如下: void get_pw_entry() { struct passwd *ptr; setpwent(); while ((ptr = getpwent()) != 0) { -- } endpwent(); return ptr; } 每个数据文件都提供了一个get方法返回文件下一个记录项. set方法充值当前位置到文件开始处. end方法关闭数据文件. 表格中的get