LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 890|回复: 2

关于vsftpd同时使用系统用户和虚拟用户验证

[复制链接]
发表于 2005-12-16 15:58:17 | 显示全部楼层 |阅读模式
vsftpd可不可以同时使用系统用户和虚拟用户,前几天单位有求建立一个ftp服务器为了安全也为了能建立更多的账户,使用虚拟账户,但也希望系统账户可以登陆。
今天想起这个问题,决定做个试验来看看,事实证明是可以的。

我先了解了一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文件


CODE:[Copy to clipboard]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的内容(节选)


CODE:[Copy to clipboard]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,匿名用户也是可以登录的。
这样的话,就可以同时支持匿名用户,系统真实用户和虚拟用户了。
发表于 2005-12-16 18:48:38 | 显示全部楼层
哈,这个问题终于有人解决啦,谢谢楼主,这两天就试验一下。
回复 支持 反对

使用道具 举报

发表于 2005-12-24 18:29:12 | 显示全部楼层
不错,改天试试
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表