(PAM架构){E:\博客图片\PAM架构.PNG}
认证库:文本文件,MySQL,NIS,LDAP等
Sun公司于1995年开发的一种于认证相关的通用框架机制
PAM是关注如何为服务验证用户的API,通过提供一些动态链接库和一套同一的API,将系统提供的服务和该服务的认证方式分开
使得系统管理员可以灵活的根据需要给不同的服务配置不同的认证方式而无需更改服务程序
一种认证框架,自身不做认证
PAM相关文件
1 | 模块文件:/lib64/security/*.so |
pam_shells模块简介
此模块用于控制那些用户可以登录,即只有用户所使用的shell是/etc/shells文件中的一种时,才可登陆。
查看哪些程序调用了该模块
1 | $ cd /etc/pam.d/ |
实验:利用pam_shells模块控制用户使用su时的限制
默认su命令不调用pam_shells模块,需增加对此模块的调用后才能使用,调用方法为:
1 | $ sed -i '2aauth required pam_shells.so' /etc/pam.d/su |
将/etc/shells文件中的/bin/csh注释掉,并将用户msq的shell类型改为/bin/csh
1 | $ sed -i '/csh/s/.*/#&/' /etc/shells |
然后用su命令切换到msq用户,会发现无法正常切换:
1 | $su - msq |
pam_securetty模块简介
此模块用于控制root只能在安全的终端登录,即只有终端是/etc/securetty文件中的一种时才能用root在该终端登录
实验:设置Telnet远程登录允许root用户登录
修改/etc/pam.d/remote文件,使远程登录不调用pam.securetty模块
1 | $ sed -i '/pam.securetty/s/.*/#.*/' /etc/pam.d/remote |
此时,Telnet等远程命令即可使用使用root账号直接登录,但是由于Telnet协议不加密,所以要慎用。
pam.nologin模块简介
此模块的作用为,当/var/run/nologin或/etc/nologin文件存在时,禁止普通用户使用任何方式登录系统。
一般在系统维护时比较实用。
pam_limits模块简介
功能:在用户级别实现对其可使用的资源的限制,例如:可打开的文件数量,可运行的进程数量,可用内存空间。
修改限制的实现方式:
1 | ulimit命令修改,立即生效,但是无法保存 |
1 | 修改配置文件:/etc/security/limits.conf,/etc/security/limits.d/*.conf |