说明:
pam_access 提供logdaemon风格的登录控制
[root@station203 pam.d]# uname -a
Linux 2.6.18-53.el5 #1 SMP Wed Oct 10 16:34:02 EDT 2007 i686 i686 i386 GNU/Linux
首先先man一下再说。
[root@station203 security]# man pam_access
...........省略..............
可以看到这个模块的默认配置文件是:/etc/security/access.conf
要使用自定义的另外一个配置文件,可以使用参数accessfile,格式:accessfile=/path/to/file.conf
配置文件格式是:
权限:用户:来源
权限:+代表允许,-代表拒绝
用户:可以是用户名、组名以及诸如user@host格式的用户名,ALL表示任何人,具有多个值时,可以用空格分开。
来源::可以是tty名称(本地登录时)、主机名、域名(以”.”开始),主机ip地址,网络号(以”.”结束)。ALL表示任何主机
,LOCAL表示本地登录。EXCEPT操作符来表示除了…之外。
修改好配置文件,就要设置启用这个模块。
修改/etc/pam.d/login或者其他配置文件,对相应的功能进行验证。
[root@station203 pam.d]# vim /etc/security/access.conf
- : abc : ALL
## 在最后添加这样一句,拒绝来自如何地方的abc用户。
[root@station203 pam.d]# vim /etc/pam.d/login
account required pam_nologin.so
account required pam_access.so ## 添加这样一句,login启用pam_access模块
OK,现在可以测试了。
[root@station203 pam.d]# useradd abc
[root@station203 pam.d]# passwd abc
Changing password for user abc.
New UNIX password:
BAD PASSWORD: it is too simplistic/systematic
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
来到试验机的本地测试。
输入abc用户,输入正确的密码。登陆界面闪一下,但是没有登陆成功。
用户root可以正常登陆
在远端,abc用putty,ssh到试验机,可以成功。这是因为ssh没有经过pam验证,只有login程序启用了pam_access模块。
[root@station203 pam.d]# vim /etc/security/access.conf
- : ALL EXCEPT abc : ALL ## 除了root和abc用户,其他用户都不能登陆。
## 我有新建了两个用户aaa和bbb
现在到本机上用aaa和bbb登陆,输入正确密码。登陆失败。root登陆也失败。。(注意了)
用abc登陆,登陆成功。
[root@station203 pam.d]# tail /var/log/audit/audit.log
[root@station203 pam.d]# tail /var/log/secure
## 查看pam相关的日志
[root@station203 security]# vim /etc/pam.d/login
account required pam_access.so accessfile=/etc/access.conf ## 指定使用另外一个配置文件
[root@station203 security]# vim /etc/access.conf ## 创建另外一个配置文件
- : root : ALL
测试:
root本地登录失败
aaa登陆成功
[root@station203 security]# vim /etc/pam.d/login ## 在设置配置文件字段的分隔符是@,默认是:
account required pam_access.so accessfile=/etc/access.conf fieldsep=@
## /etc/access.conf先不修改,测试。
## root本地登录可以登陆。
[root@station203 security]# vim /etc/access.conf ## 把字段分割符换成@
- @ root @ ALL
测试:
root登陆失败
最后,如果要sshd也支持pam_access,需要:
[root@station203 pam.d]# vim /etc/pam.d/sshd ## 添加下面的行
account required pam_access.so
















