免费注册 查看新帖 |

Chinaunix

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

[FTP] (RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-01 20:48 |只看该作者 |倒序浏览
最近不少朋友遇到配置vsftpd虚拟用户后无法登录的问题( 530 Login incorrect),都是按照vsftpd的例子或网上的教程配置的,步骤完全一样,可就是登录不了。最近的几篇帖子如下:

我的vsftpd虚用户不能登陆,怎样修改呀!急!!!
http://bbs.chinaunix.net/forum/viewtopic.php?t=584845&show_type=

vsftpd虚拟用户问题,请帮帮忙
http://bbs.chinaunix.net/forum/viewtopic.php?t=558594&show_type=

VSFTPD本地用户成功,想搞PAM加DB的,哪位大哥成功了的?
http://bbs.chinaunix.net/forum/viewtopic.php?t=583872&show_type=

“按照搂主的方法配置,在centos-3上面, 虚拟用户,怎么配置都是提示 密码错误! 实在是想不到问题会出在哪里。”
http://bbs.chinaunix.net/forum/viewtopic.php?t=561183&show_type=new&postdays=0&postorder=asc&start=20#3738430

我可能运气比较好,从未碰到这个问题,今天在帮sword_111看这个问题的时候,总结了一些东西,与大家分享,希望能解决以上朋友遇到的问题。

从sword_111的情况,我假设朋友们都是从源代码安装vsftpd,那么第一个要注意的事情是make编译之前看一下builddefs.h这个文件的内容
vsftpd-2.0.3这个版本里这个文件的内容是这样的:

  1. # cat builddefs.h
复制代码
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H

#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL


这里#define VSF_BUILD_PAM指定了要vsftpd支持pam,所以不要改成#undef VSF_BUILD_PAM

检查完builddefs.h后,make编译,用ldd命令检查生成的vsftpd文件有没有加载/lib/libpam.so.0

  1. # ldd vsftpd
复制代码

      
libpam.so.0 =>; /lib/libpam.so.0 (0x4001e000)
        libdl.so.2 =>; /lib/libdl.so.2 (0x40026000)
        libnsl.so.1 =>; /lib/libnsl.so.1 (0x40029000)
        libresolv.so.2 =>; /lib/libresolv.so.2 (0x4003e000)
        libutil.so.1 =>; /lib/libutil.so.1 (0x40050000)
        libcap.so.1 =>; /lib/libcap.so.1 (0x40053000)
        libc.so.6 =>; /lib/tls/libc.so.6 (0x42000000)
        /lib/ld-linux.so.2 =>; /lib/ld-linux.so.2 (0x40000000)


如果有,只要后面配置步骤正确,虚拟用户肯定没有问题。

如果没有,相信make过程中会出现这个Warning信息
sysdeputil.c:1112: warning: `vsf_insert_uwtmp' defined but not used
sysdeputil.c:1151: warning: `vsf_remove_uwtmp' defined but not used


解决办法:安装pam-devel
以RedHat9为例
  1. # rpm -ivh pam-devel-0.75-48.i386.rpm
复制代码


安装后,
  1. # make clean
  2. # make
复制代码

再检查vsftpd,肯定有libpam.so.0了

这样再按照正确的配置方法去配置,虚拟用户肯定没有问题。


最后,感谢sword_111提供试验的环境

论坛徽章:
0
2 [报告]
发表于 2005-08-01 20:56 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

还有一点需要说明,可以使用db4的db_load生成的虚拟用户数据文件,至少vsftp-2.0.3可以

论坛徽章:
0
3 [报告]
发表于 2005-08-09 21:12 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

照疯人的说明配置的
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
chroot_local_user=YES
guest_enable=YES
guest_username=ftpd
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=30999
anon_world_readable_only=NO
virtual_use_local_privs=YES

Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.0.3)
Name (127.0.0.1:root): test1
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>;

论坛徽章:
0
4 [报告]
发表于 2005-08-09 21:46 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

请问你是使用源码安装的吗?
如果是,按照上面的方法检查了吗?
test1是虚拟用户吗?
pam文件的内容?

论坛徽章:
0
5 [报告]
发表于 2005-08-10 12:46 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

vsftpd-2.0.3.tar.gz安装的 上面方法也检查过,
test1是在mysql 数据库里的
pam 内容为


auth required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost
db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
account required /lib/security/pam_mysql.so user=ftpd passwd=123456
host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
~
~
~

论坛徽章:
0
6 [报告]
发表于 2005-08-10 12:54 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

message 中是这样记录的

Aug 10 12:51:31 www vsftpd: Wed Aug 10 12:51:31 2005 [pid 1878] CONNECT: Client "127.0.0.1"
Aug 10 12:51:37 www vsftpd: PAM (vsftpd) illegal module type: db=ftpd
Aug 10 12:51:37 www vsftpd: PAM pam_parse: expecting return value; [...table=user]
Aug 10 12:51:37 www vsftpd: PAM unable to dlopen(/lib/security/usercolumn=name)
Aug 10 12:51:37 www vsftpd: PAM [dlerror: /lib/security/usercolumn=name: cannot open shared object file: No such file or directory]
Aug 10 12:51:37 www vsftpd: PAM adding faulty module: /lib/security/usercolumn=name
Aug 10 12:51:37 www vsftpd: PAM (vsftpd) illegal module type: host=localhost
Aug 10 12:51:37 www vsftpd: PAM pam_parse: expecting return value; [...db=ftpd]
Aug 10 12:51:37 www vsftpd: PAM unable to dlopen(/lib/security/table=user)
Aug 10 12:51:37 www vsftpd: PAM [dlerror: /lib/security/table=user: cannot open shared object file: No such file or directory]
Aug 10 12:51:37 www vsftpd: PAM adding faulty module: /lib/security/table=user
Aug 10 12:51:37 www vsftpd: pam_sm_authenticate called.
Aug 10 12:51:37 www vsftpd: dbuser changed.
Aug 10 12:51:37 www vsftpd: dbpasswd changed.
Aug 10 12:51:37 www vsftpd: host changed.
Aug 10 12:51:37 www vsftpd: db_connect  called.
Aug 10 12:51:37 www vsftpd: returning 0 .
Aug 10 12:51:37 www vsftpd: db_checkpasswd called.
Aug 10 12:51:37 www vsftpd: pam_mysql: where clause =
Aug 10 12:51:37 www vsftpd: SELECT Password FROM user WHERE User='test1'
Aug 10 12:51:37 www vsftpd: pam_mysql: select returned more than one result
Aug 10 12:51:37 www vsftpd: returning 7 after db_checkpasswd.
Aug 10 12:51:37 www vsftpd: Wed Aug 10 12:51:37 2005 [pid 1877] [test1] FAIL LOGIN: Client "127.0.0.1"
[root@www log]# Aug 10 12:51:31 www vsftpd: Wed Aug 10 12:51:31 2005 [pid 1878] CONNECT: Client "127.0.0.1"
Aug 10 12:51:37 www vsftpd: PAM (vsftpd) illegal module type: db=ftpd
Aug 10 12:51:37 www vsftpd: PAM pam_parse: expecting return value; [...table=user]
Aug 10 12:51:37 www vsftpd: PAM unable to dlopen(/lib/security/usercolumn=name)
Aug 10 12:51:37 www vsftpd: PAM [dlerror: /lib/security/usercolumn=name: cannot open shared object file: No such file or directory]
Aug 10 12:51:37 www vsftpd: PAM adding faulty module: /lib/security/usercolumn=name
Aug 10 12:51:37 www vsftpd: PAM (vsftpd) illegal module type: host=localhost
Aug 10 12:51:37 www vsftpd: PAM pam_parse: expecting return value; [...db=ftpd]
Aug 10 12:51:37 www vsftpd: PAM unable to dlopen(/lib/security/table=user)
Aug 10 12:51:37 www vsftpd: PAM [dlerror: /lib/security/table=user: cannot open shared object file: No such file or directory]
Aug 10 12:51:37 www vsftpd: PAM adding faulty module: /lib/security/table=user
Aug 10 12:51:37 www vsftpd: pam_sm_authenticate called.
Aug 10 12:51:37 www vsftpd: dbuser changed.
Aug 10 12:51:37 www vsftpd: dbpasswd changed.
Aug 10 12:51:37 www vsftpd: host changed.
Aug 10 12:51:37 www vsftpd: db_connect  called.
Aug 10 12:51:37 www vsftpd: returning 0 .
Aug 10 12:51:37 www vsftpd: db_checkpasswd called.
Aug 10 12:51:37 www vsftpd: pam_mysql: where clause =
Aug 10 12:51:37 www vsftpd: SELECT Password FROM user WHERE User='test1'
Aug 10 12:51:37 www vsftpd: pam_mysql: select returned more than one result
Aug 10 12:51:37 www vsftpd: returning 7 after db_checkpasswd.
Aug 10 12:51:37 www vsftpd: Wed Aug 10 12:51:37 2005 [pid 1877] [test1] FAIL LOGIN: Client "127.0.0.1"
[root@www log]#
Aug 10 12:51:37 qdw vsftpd: Wed Aug 10 12:51:37 2005 [pid 1877] [test1] FAIL LOGIN: Client "127.0.0.1"
[root@qdw log]#

论坛徽章:
0
7 [报告]
发表于 2005-08-10 13:01 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

请说明你的pam文件是几行?
你的pam文件是怎么做的?应该是两行,也就是说db=ftpd这里和上面必须是同一行,不能分开。
你上面发的内容是直接从文件里copy的吧?

用wc命令看一下你的这个文件到底有几行?
wc -l /etc/pam.d/vsftpd

从日志里也能判断肯定是这个文件,修改一下这个pam文件就行了。

  1. auth required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
  2. account required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0
复制代码

论坛徽章:
0
8 [报告]
发表于 2005-08-10 14:07 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

4 /etc/pam.d/vsftpd

论坛徽章:
0
9 [报告]
发表于 2005-08-10 14:19 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

Ok 谢了 wolfg  终于看到了如下画面。
Connected to 127.0.0.1 (127.0.0.1).
220 Welcome  to this FTP Server.
Name (127.0.0.1:root): test1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>; cd /
250 Directory successfully changed.

论坛徽章:
0
10 [报告]
发表于 2005-08-30 18:25 |只看该作者

(RedHat)vsftpd配置虚拟用户无法登录的朋友请看此帖

今天配置vsftp实现三个用户的不同权限:
a.upload用户,可以上传下载,可以新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹;
b.download用户,只能下载;
c.admin用户 ,管理员,可以上传,可以下载,可以新建文件夹,可以删除和更改文件和文件夹名。

在/tmp/logins.txt里
upload
upload
download
download
admin
admin
建立访问者的口令库文件,然后修改其权限
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd/vsftpd_login.db
在/etc/pam.d/中创建vsftpd.vu 添加
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
在/var/ftp/创建目录并改变其属性
useradd -d /var/myftp vuser
chmod 700  /var/myftp
创建virtual文件目录/etc/vsftpd/virtual 并在文件目录中创建以用户名命名的配置文件
download upload admin
download内容 :
anon_world_readable_only=NO
upload内容:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
admin内容:
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

在/etc/vsftpd/vsftpd.conf中插入
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.vu
user_config_dir=/etc/vsftpd/virtual
重新启动vsftpd
/sbin/service vsftpd restart

用admin可以连接登陆,用upload,download登陆提示登陆失败。
这是为什么?
谁知道为什么吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP