《APUE》第6章笔记

这一章主要介绍了口令文件和组文件的结构和一些围绕这些结构的函数。

口令文件即passwd就是在/etc/passwd中可以查阅。其结构是:

上图四个平台能支持的就用黑点表示。

因为加密口令这一项放在passwd这个人人可读的文件中,可能会有安全问题。所以现在的Linux中的加密口令都是放在/etc/shadow中,只有root用户才可以查看。而在passwd文件中加密口令这一项则显示为x。(每一项都是用冒号隔开的)

POSIX.1就定义了两个函数来让我们获取用户名或者数值用户ID。

#include <pwd.h>

struct passwd *getpwuid(uid_t uid);

struct passwd *getpwnam(const char *name);

返回值:成功返回指针,失败返回NULL

如果有些程序要查看整个口令文件,则需要下面三个函数:

#include <pwd.h>

struct passwd *getpwent(void);

返回值:成功返回指针,失败返回NULL

void setpwent(void);

void endpwent(void);

getpwent是查看口令文件中的一项内容,setpwent是定位到文件的开始处(相当于rewind函数),endpwent就是关闭口令文件。

组文件也差不多,结构上是这样:

其中最后一项的指针元素都是指向各个用户名,最后以空指针结束。

与口令文件的函数相似,POSIX.1也定义了两个函数来查看文件中的组ID和组名:

#include <grp.h>

struct group *getgrgid(gid_t gid);

struct group *getgrnam(const char *name);

返回值:成功返回指针,失败返回NULL

如果需要得知整个组文件的信息,也有类似口令文件的三个函数:

#include <grp.h>

struct group *getgrent(void);

返回值:成功返回指针,失败返回NULL

void setgernt(void);

void endgrent(void);

时间: 2024-11-05 13:38:43

《APUE》第6章笔记的相关文章

【转】《APUE》第三章笔记(4)及习题3-2

原文网址:http://www.cnblogs.com/fusae-blog/p/4256794.html APUE第三章的最后面给出的函数,现在还用不着,所以,先留个名字,待到时候用着了再补上好了. dup和dup2函数:用来复制文件描述符的 sync函数,fsync函数和fdatasync函数:大致的功能是将缓冲区的数据刷进队列中,等待写入到硬盘中. fcnti函数:可以改变已打开文件的性质. ioctl函数:控制设备. 习题: 1.当读/写磁盘文件时,本章中描述的函数是否有缓冲机制?请说明

代理模式 + Effective C++ 第一章笔记

代理模式(Proxy):为其他对象提供一种代理以控制这个对象的访问. 应用: (1):远程代理,为一个对象在不同的地址空间提供局部代表.这样可以隐藏一个对象存在于不同地址空间的事实 (2):虚拟代理,根据需要创建开销大的对象.通过虚拟代理存放实例化需要很长时间的真是对象. (3):安全代理,用来控制真是对象访问时的权限. (4):智能指针,当调用真实的对象时,代理处理另外一些事. Effective C++: 1:确定对象被使用前已经被初始化 (1),为内置类型进行手工初始化,因为C++不保证初

Functional Programming Principles in ScalaScala函式编程原理 第一章笔记

所有non-trival编程语言都提供了 基本表达式(expression)去表示最简单的表达式 组合表达式的方法 抽象表达式的方法,也就是为表达式引入一个名字去引用它 substitional model 替代模型 sumOfSquares(3,2+2) sumOfSquares(3,4) square(3)+square(4) 9+square(4) 9+16 25 这种模型的核心概念是所有的表达式都规约成值,替代模型在lamada表达式中被形式化,构成了函数式编程的基石 substitio

&lt;&lt;Linux 命令行大全学习1~2章笔记&gt;&gt;暑假学习

 <<Linux 命令行大全学习1~2章笔记>>暑假学习 第一章:shell是什么? 1 shell Shell是一个和Linux内核交互的解释性程序,我们在图形用户下通过shell终端仿真器可以和操作系统进行交互. 2本章命令行 date:显示时间 cal:  显示日历 df: 显示磁盘驱动器内存 free:显示系统内存 exit:退出终端 第二章:导航 2.1理解文件系统树 Linux系统采用树的结构表示系统的文件.目录和设备文件. 2.2当前工作目录 树的顶部是根目录,通常/

《APUE》第七章笔记

这一章主要是要解决这么几个问题: 当执行程序时,main函数是如何被调用的? main函数的原型是: int main(int argc, char *argv[]); 其中argc是命令个数,argv则是字符指针,指向字符串(命令). 当内核执行一个C程序的时候,是由一个特别的起始例程(exex函数族的一个)来调用main函数的. 命令行参数是如何传递给执行程序的? 当执行一个程序时,调用exec的进程可将命令行参数传递给该新程序.argc[argc]是NULL. 典型的存储器布局是什么样式的

HBase in Action前三章笔记

近期接触HBase,看了HBase In Action的英文版.開始认为还行,做了些笔记.可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少.把前三章的一些笔记帖一下.后面几章内容不打算整理了.并非说书内容不好. key-value存储.强一致性,多个RegionServer节点对client端是不暴露细节的 使用场景:典型的web-search, capture incremental data, ad. click stream, content s

HTTP权威指南 1~6章笔记

前些日子看了这本经典的书,基本已经看完,上面有许多有用的信息,以下为前六章的笔记: 第一章 http是应用层协议,TCP应用在传输层,IP在网络层 TCP提供 无差错的数据传输,按顺序传输,未分段传输(可以随时传递任意长度数据) HTTP客户端在向服务器发送报文之前需要用ip地址和端口号建立一条TCP/IP连接 主机名即为网址,可以通过DNS(域名服务)转换为ip地址,默认端口号为80 浏览器获取html资源的步骤: 解析出主机名 DNS转换为ip地址 解析出端口号 建立TCP连接 发送http

apue第三章习题的一些拙见(不定时更新)

写在前面:本人通信专业大二,自学apue,时间有限,这个系列都是抽时间写的,目前已经看到15章,现在从头做题,如有错误还请指教. 第一题: write和read这样的函数都属于系统调用,这里具体所指的没有缓冲区是没有用户缓冲区,而不是指没有内核缓冲区,这里以我个人的认识认为,这里write和read将数据拷贝到缓冲区后并不直接写到文件中,而是等一定条件发生后才写进去,但是具体机制还需研究.同时这里也暴露了一个问题,每次进行I/O都需要进行系统调用,这无疑是对系统资源的一种浪费,所以这也为后来的标

分治习题--九章算法培训课第三章笔记

1.Maximum Depth of Binary Tree 这是道简单的分治习题了 分: 左子树最大深度 右子树最大深度 治: 最大深度等于max(左子树,右子树)+1 public class Solution { public int maxDepth(TreeNode root) { if (root == null) { return 0; } int left = maxDepth(root.left); int right = maxDepth(root.right); retur