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的用法就这些,其他的选项也差不多,不写了。
说明:
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的用法就这些,其他的选项也差不多,不写了。
转载于:https://blog.51cto.com/jasonyong/164294