第6章系统数据文件和信息总结

1 口令文件的shell字段

 如果是空,则使用系统默认的shell,一般是/bin/sh

 /dev/null:阻止对应的用户名登陆系统

 /bin/false:同样是阻止特定用户登录,以不成功状态终止

 /bin/true:阻止特定用户登录,以成功状态终止

2 获取口令文件内容的函数

 通过用户ID或用户名可以获取该用户在口令文件中的对应项

struct passwd* getpwuid(uid_t uid)

struct passwd* getpwnam(const char *name)

 获取整个口令文件内容:

struct passwd *getpwent()

 示例:

struct passwd *a;
printf("name\tpasswd\tshell\n");
while( (a = getpwent()) != NULL)
{
     printf("%s\t%s\t%s\n",a->pw_name,a->pw_passwd,a->pw_shell);
}
endpwent();

 调用getpwent函数时,一定要调用endpwent函数关闭

 在getpwent之前调用setpwent可以反绕口令文件,使定位到口令文件开始处,防止口令文件已经被getpwent掉用过

3 阴影口令

关于阴影口令有一组与口令文件类似的函数:

struct spwd *getspnam(const char *name)

struct spwd *getspent()

void setspent()

void endspent()
时间: 2024-09-30 11:05:54

第6章系统数据文件和信息总结的相关文章

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

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

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

APUE读书笔记-第六章 系统数据文件和信息

昨天看完了,今天来看看第六章.感觉第六章的内容不是非常重要.简单看看吧 6.2 口令文件 口令文件其实就是/etc文件夹下的passwd文件,但处于安全性的考虑,我们无法直接读取它.就是通过直接限制权限的方式对其进行保护,passwd文件具体权限如下: -rw-r--r-- 1 root root 可以看到只有root用户具有读写权限,与root同组的用户与其他用户仅具有读权限. 不过为了解决以上问题,Linux中给出了一系列数据结构与函数帮助我们操纵口令文件,首先是关键数据结构,定义位于/in

(四) 一起学 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

《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环境高级编程学习笔记(三):标准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第三版-(6)系统数据文件和信息

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

系统数据文件和信息

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

《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