Chinaunix

标题: rhel5.2 64位安装vsftp 虚拟用户不能登录,大家看看到底什么问题 [打印本页]

作者: flyingbird111    时间: 2010-01-07 13:32
标题: rhel5.2 64位安装vsftp 虚拟用户不能登录,大家看看到底什么问题
1、builddefs.h中的undef -》define
builddefs.h
#原内容
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H

#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
2、vsf_findlibs.sh中/lib -》lib64
3、安装过程
chmod a+x vsf_findlibs.sh
make clean
make
install -m 755 vsftpd /usr/local/sbin/vsftpd
install -m 644 vsftpd.8 /usr/share/man/man8
install -m 644 vsftpd.conf.5 /usr/share/man/man5
mkdir /etc/vsftpd
install -m 644 vsftpd.conf /etc/vsftpd/vsftpd.conf
mkdir /var/vsftpd
#vi /var/vsftpd/logins.txt
test1
12345
test2
12345

/usr/bin/db_load -T -t hash -f /var/vsftpd/logins.txt /etc/vsftpd_login.db
chmod 600 /etc/vsftpd_login.db

vi /etc/pam.d/ftp插入如下两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

#建立一个虚拟用户
useradd -d /var/vsftpd/vsftpd -s /sbin/nologin vsftpd

vi /etc/vsftpd/vsftpd.conf
listen=YES
#支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)
tcp_wrappers=YES
anonymous_enable=NO
#PAM方式此处必须为YES,如果不是将出现如下错误:500 OOPS: vsftpd: both local and anonymous access disabled!
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
chroot_list_enable=YES
#这两行的意思是采用虚拟用户形式
guest_enable=YES
guest_username=vsftpd
#虚拟用户和本地用户权限相同
virtual_use_local_privs=YES
#建立资料联机采用被动方式
pasv_enable=YES
anon_world_readable_only=NO

xferlog_std_format=NO
log_ftp_protocol=YES(如果启用, 假若选项 xferlog_std_format 没有启用, 所有的 FTP 请求和应答都会被记录. 此选项将对调试很有用)
pam_service_name=vsftpd
xferlog_file=/var/log/xferlog
vsftpd_log_file=/var/log/vsftpd.log
dual_log_enable=YES #new
#将日志输入到syslog中,即/var/log/messages。
syslog_enable=YES #new
#配置用户环境
user_config_dir=/etc/vsftpd_user_conf

mkdir /etc/vsftpd_user_conf
mkdir /var/vsftpd/vsftpd/test1
chmod 700 /var/vsftpd/vsftpd/test1
chown vsftpd /var/vsftpd/vsftpd/test1
vi /etc/vsftpd_user_conf/test1
#增加写权限
local_root=/var/vsftpd/vsftpd/test1
write_enable=YES
#anon_world_readable_only=NO  注意不要写成YES,否则将不能列出文件和目录
anon_world_readable_only=NO
#增加上传权限
anon_upload_enable=YES
#增加创建目录的权限
anon_mkdir_write_enable=YES
#增加管理员用户的删除/重命名的权限
anon_other_write_enable=YES

mkdir /var/vsftpd/vsftpd/test2
chmod 700 /var/vsftpd/vsftpd/test2
chown vsftpd /var/vsftpd/vsftpd/test2
vi  /etc/vsftpd_user_conf/test2
local_root=/var/vsftpd/vsftpd/test1
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf &

启动后
Connected to X.X.X.X
220 (vsFTPd 2.2.2)
User (134.238.9.211none)): test1
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.

还有我把log_ftp_protocol开关打开,还是只有
vsftpd[3390]: [test1] FAIL LOGIN: ....
没有更详细的消息,

大家看看问题出现在哪里,该如何调试
作者: diyself    时间: 2010-01-10 10:20
标题: 回复 #1 flyingbird111 的帖子
登录时messages有何输出信息? ftp 127.0.0.1看看?
作者: ssed    时间: 2010-01-30 12:32
在64为上编译的vsftpd有问题,把32机器上编译好的二进制程序复制到64位上就可以了
作者: ssed    时间: 2010-01-30 12:39
还有一种解决方法:
把/etc/pam.d/vsftpd中的认证模块改为64位的,即:
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd.d/login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd.d/login
作者: 0vk0    时间: 2010-01-30 21:10
在64为上编译的vsftpd有问题,把32机器上编译好的二进制程序复制到64位上就可以了

方法好




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2