关于vsftpd同时使用系统用户和虚拟用户验证
2009-10-29 13:26
495 查看
记得有朋友曾经问过vsftpd可不可以同时使用系统用户和虚拟用户,我当时回答不可以。
对PAM了解不够,所以这个答案是错误的
今天想起这个问题,决定做个试验来看看,事实证明是可以的。
我先了解了一PAM,看了这个文档, http://www.linuxmine.com/5214.html
知道了PAM的验证模块是可以串在一起的,通过控制标志(control-flag)来控制。
文档里也给出了类似的一个例子。
QUOTE:
为了打开匿名FTP,需要使用以下的配置命令代替默认的配置(OTHER):
# ftpd; add ftp-specifics. These lines enable anonymous ftp over
# standard UNIX access (the listfile entry blocks access to
# users listed in /etc/ftpusers)
#
ftpd auth sufficient /usr/lib/security/pam_ftp.so
ftpd auth required /usr/lib/security/pam_unix_auth.so use_first_pass
ftpd auth required /usr/lib/security/pam_listfile.so
onerr=succeed item=user sense=deny file=/etc/ftpusers
由于需要忽略默认的配置入口,所以第二行是必须要有的。这还是一个层叠模块的例子。使用sufficient控制标志,表示如果这个模块验证通过,就不必使用后面的层叠模块进行验证了;use_first_pass表示使用为前面的模块(pam_ftp)输入的密码。
我的试验环境:
RedHat AS 4
vsftpd-2.0.1-5
pam-0.77-65.1
vsftpd使用的pam文件
[Copy to clipboard] [ - ]CODE:
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
auth required pam_stack.so service=system-auth
auth required pam_shells.so
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
可以看出前面两行是对虚拟用户的验证,后面是对系统用户的验证。
对虚拟用户的验证使用了sufficient这个控制标志。
这个标志的含义是如果这个模块验证通过,就不必使用后面的层叠模块进行验证了;但如果失败了,
就继续后面的认证,也就是使用系统真实用户的验证。
vsftpd.conf的内容(节选)
[Copy to clipboard] [ - ]CODE:
pam_service_name=vsftpd.mixed
listen=YES
tcp_wrappers=YES
local_enable=YES
guest_enable=YES
guest_username=ftp
listen_port=2121
如果加上anonymous_enable=YES,匿名用户也是可以登录的。
这样的话,就可以同时支持匿名用户,系统真实用户和虚拟用户了。
对PAM了解不够,所以这个答案是错误的
今天想起这个问题,决定做个试验来看看,事实证明是可以的。
我先了解了一PAM,看了这个文档, http://www.linuxmine.com/5214.html
知道了PAM的验证模块是可以串在一起的,通过控制标志(control-flag)来控制。
文档里也给出了类似的一个例子。
QUOTE:
为了打开匿名FTP,需要使用以下的配置命令代替默认的配置(OTHER):
# ftpd; add ftp-specifics. These lines enable anonymous ftp over
# standard UNIX access (the listfile entry blocks access to
# users listed in /etc/ftpusers)
#
ftpd auth sufficient /usr/lib/security/pam_ftp.so
ftpd auth required /usr/lib/security/pam_unix_auth.so use_first_pass
ftpd auth required /usr/lib/security/pam_listfile.so
onerr=succeed item=user sense=deny file=/etc/ftpusers
由于需要忽略默认的配置入口,所以第二行是必须要有的。这还是一个层叠模块的例子。使用sufficient控制标志,表示如果这个模块验证通过,就不必使用后面的层叠模块进行验证了;use_first_pass表示使用为前面的模块(pam_ftp)输入的密码。
我的试验环境:
RedHat AS 4
vsftpd-2.0.1-5
pam-0.77-65.1
vsftpd使用的pam文件
[Copy to clipboard] [ - ]CODE:
auth sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient pam_userdb.so db=/etc/vsftpd/vsftpd_login
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
auth required pam_stack.so service=system-auth
auth required pam_shells.so
account required pam_stack.so service=system-auth
session required pam_stack.so service=system-auth
可以看出前面两行是对虚拟用户的验证,后面是对系统用户的验证。
对虚拟用户的验证使用了sufficient这个控制标志。
这个标志的含义是如果这个模块验证通过,就不必使用后面的层叠模块进行验证了;但如果失败了,
就继续后面的认证,也就是使用系统真实用户的验证。
vsftpd.conf的内容(节选)
[Copy to clipboard] [ - ]CODE:
pam_service_name=vsftpd.mixed
listen=YES
tcp_wrappers=YES
local_enable=YES
guest_enable=YES
guest_username=ftp
listen_port=2121
如果加上anonymous_enable=YES,匿名用户也是可以登录的。
这样的话,就可以同时支持匿名用户,系统真实用户和虚拟用户了。
相关文章推荐
- vsftpd同时使用系统用户和虚拟用户验证
- Vsftpd使用虚拟用户登录调用mysql验证
- Vsftpd FTP服务器-虚拟用户(mysql)和本地用户同时验证
- Vsftpd FTP服务器-虚拟用户(mysql)和本地用户同时验证
- vsftpd使用虚拟用户认证
- CentOS 6.5系统安装vsFTPd并配置虚拟用户
- springsecurity中如何做到多个用户不能使用同一个账号同时登陆系统
- 烂泥:vsftpd虚拟用户与匿名用户配合使用
- LinuxMint上架设匿名与虚拟用户同时存在的vsftpd服务器
- Apache + Tomcat + jk配置负载均衡以及虚拟主机 实现多域名、多用户同时使用
- vsftpd下设置多个虚拟用户使用同一个目录
- CentOS 5.3系统设置vsftpd虚拟用户的具体步骤
- vsftpd 使用虚拟用户及单用户多目录的配置
- 关于:bs结构系统,一个用户只能同时一人在线的实现
- Vsftpd+MySQL实现虚拟用户验证登录
- 实现基于文件验证的vsftpd虚拟用户和基于MYSQL验证的vsftpd虚拟用户
- 在Centos7上使用vsftpd+pam_mysql实现虚拟用户认证
- Debian系统下利用vsdftpd+Mysql实现虚拟用户登录(Debian+vsftpd+Mysql)
- ubuntu下vsftpd的配置(虚拟用户基于文件验证)
- 实现基于文件验证的vsftpd 虚拟用户