pam_listfile的使用(五)

                    pam_listfile的使用

说明:
pam_listfile        应用程序对文件的访问控制

[root@station203 pam.d]# uname -a
Linux station203.example.com 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_listfile
...........省略..............


所属类型:auth、account、password、session


用法:
pam_listfile.so item=[tty|user|rhost|ruser|group|shell]
        sense=[allow|deny]
        file=/path/filename
        onerr=[succeed|fail]
        [apply=[user|@group]]

item:设置访问控制的对象类型。
sense:用来指定当在保存“item”对象的文件中找不到item指定的对象时的动作方式,如果在文件中找不到相应的对象,则执行相

反的动作。
file:指定保存有“item”对象的文件位置。
onerr:用来指定当某类事件(如无法打开配置文件)发生时的返回值。
apply:用指定使用非用户和组类别时,这些规则所适用的对象。当item=[user|ruser|group]时,这个选项没有任何意义,只有当

item=[tty|rhost|shell]时才有意义。


实例:
先安装好vsftp,我用这个软件做试验。
[root@station203 pam.d]# rpm -qa | grep vsftp
vsftpd-2.0.5-10.el5
[root@station203 pam.d]# service vsftpd start            ## 直接启动

[root@station203 pam.d]# vim vsftpd

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
## 试着解读上面这行。

## 说明,vsftp默认允许localuser登陆ftp,我的系统已经有aaa,bbb两用户。

[root@station203 pam.d]# vim /etc/vsftpd/ftpusers
## 在最后加上aaa

[root@station203 pam.d]# ftp 192.168.1.203            ## aaa用户测试登陆ftp,输入正确密码,登陆失败
Connected to 192.168.1.203.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.1.203:root): aaa
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

[root@station203 pam.d]# ftp 192.168.1.203            ## bbb用户测试登陆ftp,输入正确密码,登陆成功
Connected to 192.168.1.203.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.1.203:root): bbb
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

[root@station203 pam.d]# vim vsftpd                 ## 如果我把sense=deny改成allow会变成什么样子?

#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=allow file=/etc/vsftpd/ftpusers onerr=succeed

## 修改好后,vsftp只允许/etc/vsftpd/ftpusers文件中的用户登陆。
## 试验昨晚,改回deny吧。一个插曲,昨天做的pam_succeed_if试验,忘记改回来,结果今天开机root登陆不上,只能进单用户改

回来。

实例二:
[root@station203 pam.d]# useradd -s /bin/csh ccc        ## 新建用户ccc,他的登录shell是csh
[root@station203 pam.d]# passwd ccc
[root@station203 pam.d]# vim /etc/loginshell            ## 创建一个文件,内容如下
/bin/csh
## 注意,这里要写绝对路径
[root@station203 pam.d]# vim system-auth              ## 添加下面这行,想象会怎么样?
auth        required      pam_listfile.so item=shell sense=deny file=/etc/loginshell onerr=succeed

测试:
用ccc用户登陆,失败,查看/var/log/secure时pam_listfile起作用了。
假如我又把这行的sense=deny改成allow会怎么样?

OK,pam_listfile的用法就这些,其他的选项也差不多,不写了。

你可能感兴趣的:(职场,休闲)