PAM-access模块开发

//包含各种头文件

//首先,我们在这个文件中定义了外部可访问的函数(这些定义对于静态模块是必需的,但通常强烈建议这样做),它们被用来指示模块包含文件来定义它们的原型。

//此模块实现了一种简单但有效的登录访问控制形式,它基于登录名和主机名、互联网地址或终端线路名(如果是非网络登录)。诊断结果通过日志报告。

//定义一个结构,用于构建所有与登录相关的信息,以使函数接口尽可能通用。

//解析模块配置参数

//定义用于检查用户是否应该被允许进入的静态函数

//isipaddr-查明提供的字符串是不是一个IP地址

//are_addresses_equal-将IP地址字符串转换为真实的IP地址,并对它们进行比较,以确定它们是否相等。如果提供了网络掩码,它将用于聚焦比较相关位。

//login_access-将‘用户名/组’、‘主机/终端’与访问控制文件匹配
//一次处理一行表,并在第一次匹配时停止。空行和以“#”字符开头的行被忽略。非注释行在':'字符处断开。所有字段都是必填项。第一个字段应该是“+”或“-”字符。不存在的表意味着没有访问控制。

//list_match-将一个项与带有异常的令牌列表相匹配
//一次处理一个令牌。当到达“EXCEPT”令牌或列表末尾时,我们已经用尽了所有可能的匹配。如果我们确实找到了匹配,那么查找“EXCEPT”列表并递归确定匹配是否受到任何异常的影响。

//netgroup_match-将组与机器或用户匹配

//user_match-将用户名与一个令牌匹配
//如果一个令牌具有神奇的值“ALL”,那么匹配总是成功的。否则,如果令牌完全匹配用户名,如果令牌是包含用户名的组,或者如果令牌是用户主组的名称,则返回YES。

//group_match-将用户名与名为组的令牌匹配

//from_match-将主机或tty与令牌列表匹配
//如果一个令牌具有神奇的值“ALL”,那么匹配总是成功的。如果令牌完全匹配字符串,则返回YES。如果标记是domin名称,如果它匹配字符串的最后一个字段,则返回YES。如果令牌具有神奇的值“LOCAL”,那么如果PAM_RHOST没有获取from字段,则返回YES。如果令牌是网络号,如果它匹配字符串的头部,则返回YES。

//string_match-将字符串与一个令牌匹配
//如果令牌具有神奇的值“ALL”,则匹配总是成功。否则,如果令牌完全匹配字符串,则返回YES。“NONE”令牌匹配空字符串。

//network_netmask_match-将字符串与一个令牌匹配,其中字符串是主机名或ip地址,tok表示单个ip地址或网络

//公共的解析函数