免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3137 | 回复: 2
打印 上一主题 下一主题

[FTP] vsftp能在虚拟帐号和本地帐号同时登录! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-02 10:36 |只看该作者 |倒序浏览
记得有朋友曾经问过vsftpd可不可以同时使用系统用户和虚拟用户,我当时回答不可以。
对PAM了解不够,所以这个答案是错误的。
今天想起这个问题,决定做个试验来看看,事实证明是可以的。
我先了解了一PAM,看了这个文档,
www.linuxmine.com/5214.html
知道了PAM的验证模块是可以串在一起的,通过控制标志(control-flag)来控制。
文档里也给出了类似的一个例子。
为了打开匿名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文件
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的内容(部分)
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,匿名用户也是可以登录的。
这样的话,就可以同时支持匿名用户,系统真实用户和虚拟用户了。

论坛徽章:
0
2 [报告]
发表于 2008-08-02 10:37 |只看该作者
我也在配置虚拟帐户,现在发现虚拟帐户和本地帐户都能登陆ftp了,但是以本地帐户root登陆时,权限怎么变得跟虚拟帐户(vsftpdguest)一样小了。
我的配置:
# Standalone mode
listen=NO
max_clients=200
max_per_ip=4
# Access rights
anonymous_enable=YES
local_enable=YES
local_root=/
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
# Security
anon_world_readable_only=NO
user_config_dir=/etc/vsftpd/vsftpd_user_conf/
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000
# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES
# Performance
#one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000
guest_enable=YES
guest_username=vsftpdguest
#virtual_use_local_privs=YES

论坛徽章:
0
3 [报告]
发表于 2008-08-02 10:38 |只看该作者
这是因为配置文件里
guest_enable=YES
guest_username=vsftpdguest
的原因。
所有的ftp用户都映射到了vsftpdguest这个用户。
同时使用系统用户和虚拟用户验证只是一种试验,似乎并不适合实际环境中使用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP