linux身份鉴别检查方法,Linux身份鉴别机制实现分析(5)
原标题:Linux身份鉴别机制实现分析(5)2.4.2文件二 pam_access.cPAM中具有多种服务模块,服务模块就是具体的身份验证方式,传统的UNIX验证方式也是以pam_unix.so的形式挂载在pam的服务模块中。2.4.2.1 文件描述pam_access模块提供基于登录用户名、客户IP或者主机名、网络号以及登录终端号的访问控制。所属类型是account,即帐号管理类型,该模块的配置
原标题:Linux身份鉴别机制实现分析(5)
2.4.2文件二 pam_access.c
PAM中具有多种服务模块,服务模块就是具体的身份验证方式,传统的UNIX验证方式也是以pam_unix.so的形式挂载在pam的服务模块中。
2.4.2.1 文件描述
pam_access模块提供基于登录用户名、客户IP或者主机名、网络号以及登录终端号的访问控制。所属类型是account,即帐号管理类型,该模块的配置文件是/etc/security/access.conf,可以使用accessfile参数指定自定义的配置文件【1】。该模块可带参数:accessfile=/path/to/file.conf,需写入具体配置文件的路径,配置文件中是每行是由三个字段组成的:
权限:用户:来源
权限字段可以是”+”(即允许访问),”-”(禁止访问),用户字段可以是用户名、组名以及诸如格式的用户名,ALL表示任何人,具有多个值时,可以用空格分开。来源字段可以是tty名称(本地登录时)、主机名、域名(以”.”开始),主机IP地址,网络号(以”.”结束)。ALL表示任何主机,LOCAL表示本地登录。
2.4.2.2主要变量及宏定义
pam_access.c中主要的变量及宏定义如下:
2.4.2.3结构体定义
该文件定义了一个login_info的结构体来描述用户信息:
该结构体中字段含义解释如下表:
通过定义一个pam_module 的结构体,将此模块挂接在整个模块链表中供_pam_dispatch来遍历并运用这个服务模块,其定义如下所示:
2.4.2.4外部函数
服务模块用PAM的SPI来编写具体的验证方式,以下是在pam_access.c文件中这些SPI的原型。
1. pam_sm_setcred()
函数原型:
函数功能:设置认证信息接口。
函数参数:pamh为PAM过程信息结构体,flags为标志位,argc表示传递的参数个数,argvc表示传递的参数的字符串数组。
返回值:PAM_IGNORE。
2. pam_sm_acct_mgmt()
函数原型:
函数功能:设置用户认证信息接口。
函数参数:pamh为PAM过程信息结构体,flags为标志位,argc表示传递的参数个数,argvc表示传递的参数的字符串数组。
返回值:pam_sm_authenticate()的验证结果。
3. pam_sm_open_session()
函数原型:
函数功能:设置打开会话函数接口。
函数参数:pamh为PAM过程信息结构体,flags为标志位,argc表示传递的参数个数,argvc表示传递的参数的字符串数组。
返回值:pam_sm_authenticate()的验证结果。
4. pam_sm_close_session()
函数原型:
函数功能:设置关闭会话函数接口。
函数参数:pamh为PAM过程信息结构体,flags为标志位,argc表示传递的参数个数,argvc表示传递的参数的字符串数组。
返回值:pam_sm_authenticate()的验证结果。
5. pam_sm_chauthtok()
函数原型:
函数功能:设置更改密码函数接口。
函数参数:pamh为PAM过程信息结构体,flags为标志位,argc表示传递的参数个数,argvc表示传递的参数的字符串数组。
返回值:pam_sm_authenticate()的验证结果。
该模块主要是通过pam_sm_authenticate这个接口函数来实现的,其函数原型为:
函数流程图如下所示:
1.首先通过pam_get_user获得用户名等信息,失败则记入日志并退出;
2. 如果获取失败或者用户名为空,则向系统记录出错;
3. 如果成功则将得到的用户信息存入user_pw中;
4. 开辟存储空间,并将用户信息存入loginfo这个结构体中;
5. 通过parse_args解析配置文件或传输路径的参数,查看是否具有远程远程登录,有则将loginfo.from_remote_host记录为1,没有则视为本地登录,并用pam_get_item来获得本地登录的终端名。
6. 所有信息获得之后,将进入login_access这个函数来对用户进行权限验证,如果通过权限则返回PAM_SUCCESS,失败则返回PAM_PERM_DENIED。
责任编辑:
更多推荐
所有评论(0)