linux pam(一)

来源:互联网 发布:数据的准确性和及时性 编辑:程序博客网 时间:2024/05/12 21:01
linux pam(一)

pam由一个与指令相同文件名的配置文件来进行一连串认证需求。以passwd为例来分析pam调用过程:

1.用户开始执行/usr/bin/passwd指令,并输入密码

2.passwd调用pam模块进行验证。

3.pam模块会到/etc/pam.d/下找寻与指令同名的配置文件

4.依据指令同名的配置文件内的设定,引用pam模块进行逐步验证分析、

5.将验证结果返回给指令

6.指令根据返回结果决定下一个动作

[root@localhost ~]# cat /etc/pam.d/passwd

#%PAM-1.0         -----版本信息

1             2                    3

auth      include       system-auth

account   include       system-auth

password  substack    system-auth

password  optional    pam_gnome_keyring.so
 

passwd指令pam验证模块的文件结构,以上每一行都是一个独立的验证流程,每一行分三个字段,分别问验证类别(type)、控制标准(flag)pam模块与模块参数。

1.验证类别(type)

auth:主要用于检验使用者的身份验证,通常需要密码来检验的

account:主要用于检测使用者是否具有相关权限

session:通常用于记录登录者登入与注销信息

passwd:用于变更密码
 

2.控制标志:验证通过标准

required:次验证成功返回success标志,失败这返回false标志,不论成功或者失败都会进行后续验证

requisite:若验证失败则返回false标志,并停止后续验证,如果成功,则返回success标志并继续后续流程验证

sufficient:与requisite恰好相反

optional:用于显示信息
 

pam模块相关的配置文件

/etc/pam.d/*  每个指令个别的pam配置文件

/etc/security/*  其他pam环境的配置文件  

/lib/security/*  pam模块文件实际放置目录

/usr/share/doc/pam-*/:详细的 PAM验证模块说明文件 

实例:控制libo用户不能再tty4终端登录
1.修改/etc/pam.d/login文件,新增account    required     pam_access.so,如下图所示:

#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       include      system-auth
account    required     pam_nologin.so
account    required     pam_access.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
-session   optional     pam_ck_connector.so
session    required     pam_limits.so

2.修改/etc/security/access.so,新增-:t:tty4,如下图所示     :
# User "john" should get access from ipv6 net/mask
#+ : john : 2001:4ca0:0:101::/64
#
# All other users should be denied to get access from all sources.
#- : ALL : ALL
-:libo:tty4    

3.测试通过  
原创粉丝点击