PAM简单学习

一 什么是PAM

PAMPluggable Authentication Modules,中文就是可插入的认证模块。在这种方式下可以改变用户账号和口令信息的存储方式,例如,可以把用户信息存储在数据库中而不是在文件/etc/passwd中,甚至还可以修改供认证的信息,例如,可以使用智能卡、指纹等而不是用户名和口令认证。大多数主流Linux版本都提供了PAM


PAM的配置文件


PAM配置信息可能在一个单独的叫作/etc/pam.conf的文件里或者存储在目录/etc/pam.d/下的各自的文件里。F7采用了后一种。


目录/etc/pam.d/包含一系列的文件。每一个文件以一个使用PAM做认证的服务命名,包含PAM为这个特定的认证提供服务时必须要用的配置信息。例如,我的F7系统的/etc/pam.d/目录里包含如下文件:


[root@localhost flood]# ls /etc/pam.d/

atd other su-l

authconfig passwd system-auth

authconfig-gtk pirut system-auth-ac

authconfig-tui pm-hibernate system-cdinstall-helper

chfn pm-powersave system-config-authentication

chsh pm-suspend system-config-date

config-util pm-suspend-hybrid system-config-display

crond poweroff system-config-keyboard

cups ppp system-config-language

dateconfig pup system-config-network

eject reboot system-config-network-cmd

gdm remote system-config-printer

gdm-autologin run_init system-config-securitylevel

gdmsetup runuser system-config-selinux

halt runuser-l system-config-services

kbdrate samba system-config-soundcard

kcheckpass serviceconf system-config-time

kdm setup system-config-users

kdm-np smtp system-install-packages

kppp smtp.sendmail vsftpd

kscreensaver sshd xdm

login su xserver

neat sudo

newrole sudo-i


例如 文件vsftpd告诉PAM如何处理来处ftp服务的认证

[root@localhost flood]# more /etc/pam.d/vsftpd

#%PAM-1.0

session optional pam_keyinit.so force revoke

auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ft

pusers onerr=succeed

auth required pam_shells.so

auth include system-auth

account include system-auth

session include system-auth

session required pam_loginuid.so

这个文件包含了一系列的PAM配置指令,每个一行,告诉PAM如何执行来自FTP服务的认证。每条都具有如下的形式:

<module type> <control flag> <module path> <arguments>

这些域的含义如下:

module type是以下4个可能值中的一个:auth(表示这个模块确认谁是授权用户,并肯通过信任凭证授予成员权和其他特权)account(表示这个模块执行非认证账号管理,例如基于用户试图登录时的时间和地点的访问控制)session(表示这个模块在用户登录前登录后为用户执行记录日志信息和加载目录的服务)password(表示这个模块用于更新认证令牌,例如口令)。一般对应每一个auth模块有一个password模块。

Control flag指示PAM应该如何处理这个模块的一次动作的成功或者失败。它的可能值为:required(表示如果没有相同类型的模块成功,就要求这个模块成功)requisite(表示要求这个模块成功,失败意味着整个认证失败,不管是否有其他模块等待尝试)sufficient(表示如果没有required的模块失败的话,这个模块的成功对于整个认证过程就足够了)optional(表示这个模块对于整个认证尝试的成功或者失败并不是关键,如果不清楚其他的模块是否成功,这个模块可以用来判断认证是否成功)


Module path表示指令要使用的共享目标文件的绝对路径。

arguments是当模块激活时传递给它的一系列选项。这是可选的,而且使用它们是针对每一个具体模块的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值