Pma模块详解,对用户登录linux等进行限制,密码修改限制等
2017-10-17 11:00
881 查看
PAM详细介绍
2014-04-02 09:26:41
标签:PAM
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lidefu.blog.51cto.com/3429777/1388751
1.PMA简介
PMA(Pluggable Authentication Module)是一个可插入式认证模块,在Linux系统中,各种不同的应用程序都需要完成认证功能,为了实现统一调配,把所有需要认证的功能做成一个模 块(认证机制特别复杂的除外,如:https),当特定的程序需要完成认证功能的时候,就去调用PMA的认证模块,这些模块都位于系统中的/lib64 /security(/lib/security:32位操作系统)目录下,但并不是所有的模块都是用来完成认证的,有些模块是为了实现PAM的某些高级 功能而存在的,其中PMA的认证库是由glibc提供的,应用程序最终使用哪个PMA模块,取决于/etc/pma.d/*这个目录下的定义.
PMA完成认证的过程:下面用passwd这个应用程序举例吧!
一)首先用户执行/usr/bin/passwd这个程序,并输入密码
二)passwd这个程序会去调用PMA模块进行验证
三)PMA会到/etc/pam.d/*下去寻找与passwd同名的配置文件
四)当找到配置文件后,PMA会根据/etc/pam.d/passwd内的配置,调用PMA的模块进行认证
五)认证完成后,将验证的结果返回给passwd这支程序
六)最终,passwd会根据PAM的返回结果决定下一个执行动作(重新输入密码或验证通过)
·在以上步骤中最重要的是第四步,我们来详细分析一下分析下第四步,pam是如何完成认证功能的,同样,拿/etc/pam.d/passwd来举例,首先来 /etc/pam.d/passswd的配置信息.
验证类别主要分为如下四种,并且按顺序依次向下验证
·auth
auth是用来认证用户的身份信息的,如果auth认证的时候需要用到多个模块,就依次检查各个模块,这个模块通常最终都是是需要密码来检验的,所以这个模块之后的下一个模块是用来检验用户身份的.如果帐号没问题,就授权
·account
account大部分是用来检查权限的,比如检查账户和密码是否过期等,如果你使用一个过期的账户或密码就不允许验证通过.如果有多个模块,也依次检查各个模块.
·password
修改密码需要用到的,如果用户不修改密码,几乎用不到这个模块.
·session
限定会话限制的,比如:vsftpd下午6点不允许访问,那6点过后用户再去访问的话就会被限制,或内存 不足不允许访问等,session就是限定这种类型的
·第二个字段:验证控制标志(control flag)
用于控制认证成功或失败时要采取的行动,其中又分为两种control,一种是简单control,一种是复杂 contorl
·简单的control
·required
此验证如果成功则带有success的标志,如果失败则带有failure的标志,此验证如果失败了,就一定会 返回失败的标志,但是不会立即返回,而是等所有模块验证完成后才返回,所以它不论验证成功或失败 都会继续向后验证其他的流程.
·requisite
如果验证失败则立即返回failure的标志,并终止后续的验证流程,如果验证带有success标志,则继续 后面的流程.
·sufficient
与requisite正好相反,此验证如果成功则带有success的标志,并立即终止后续的流程,如果验证带有 failure的标志,则继续后面的流程.
·optional
optional参考意见,这个只是打酱油的....
·以上流程如下图所示
·include
包含进来指定的其他配置文件中的同名栈中的规则,并以之进行检测.
·substack·
有点麻烦.不管他了...你也用不着
·PAM模块路径
·/etc/pam.d/*:每个程序个别的PAM的配置文件;
·/lib/security/*:PAM模块档案的实际放置目录;
·/etc/security/*:其他PAM环境的配置文件;
·/usr/share/doc/pam-*/:详细的PAM说明文件;
·PAM模块分类
·pam_unix.so
传统意义上的帐号和密码认证机制,这个机制实现了标准C库中基于让用户输入帐号密码并完成检测 的认证过程
·pam_permit.so
直接通过,允许访问,定义默认策略
·pam_deny.so
拒绝访问,定义默认策略
·pam_cracklib.so
用来检验密码的强度,包括设定的密码是否在字典中,修改的密码是否能和上次一样,密码至少包含多 少个数字字符,可以输入多少次错误密码等,都是由这个模块定义的
·pam_shells.so
检查用户登录的shell是否是安全shell,也就是写在 /etc/shells中的shell
·pam_securetty.so
限定管理员只能通过安全的tty登录,/etc/securetty,tty就是传统终端
·pam_listfile,这东西可牛逼了....
管理员su到其他用户不用输入密码就是靠这个定义的
·pam_succeed_if.so
普通用户su的时候不需要密码
·pam_limits.so
资源限定打开文件数,使用进程数等等,对任何人都生效,/etc/security/limits 或/etc/security/limits.d/*
·pam_nologin.so
可以限制一般用户是否能够登入主机,当/etc/nologin这个档案存在时,则所有一般使用者均无法 再登入系统
练习:
·限制root用户只能最多从tty2登录,不能远程使用sshd登录
相关文章推荐
- Linux 指令详解 chpasswd 批量修改用户密码
- 单用户、救援模式修改root密码,克隆centos及linux机器相互登录
- (十)用户管理模块(登录,注册,修改,重置密码MD5加密,时间戳+sql server 2014)
- linux下安装mysql数据库5.6源码安装,修改登录用户密码
- Linux限制用户登录详解
- linux ubuntu root用户首次登录修改密码
- Linux下强制新用户首次登录时修改密码
- 如何使linux用户下次登录强制修改密码
- linux命令详解之useradd命令使用方法[linux下 添加用户、删除用户、修改用户密码、用户组管理]
- linux中ftp用户登录密码忘记了怎么修改
- Linux下修改MySQL初始密码、开启远程登录、授权远程登录用户
- Linux 上如何创建新的用户,并让其在首次登陆后修改密码,并限制其允许使用的磁盘空间
- 零基础Linux教程第四课“SSH密匙登录Linux,WinSCP教程,修改Linux用户密码”
- RH413-利用PAM对Linux下的用户密码长度以及复杂度进行限制
- SSH密匙登录Linux,WinSCP教程,修改Linux用户密码
- linux下安装mysql数据库5.6源码安装,修改登录用户密码
- Linux基础——centos 跳过管理员密码进行登录(单用户模式、救援模式)
- Android基于XMPP Smack Openfire下学习开发IM(一)实现用户注册、登录、修改密码和注销等
- linux下批量修改用户密码
- Linux下批量修改服务器用户密码方法步骤