如何在 Ubuntu 上配置 vsftpd + pam 使之支持虚拟用户?

2014-05-12 15:25:02 +08:00
 Shared
系统情况:Ubuntu 12.04 + vsftpd 2.3.5 + db5.1

按照 nixCraft http://t.cn/8sFENKI 的教程配置完之后,每次登录 FTP 都是提示 530 Login incorrect,毫无头绪啊。

如果不用 pam,使用本地用户直接登录,倒是没什么问题。可是系统里加一堆用户实在不方便,有人成功配置过 vsftpd + pam 认证吗?
2899 次点击
所在节点    Linux
6 条回复
auser
2014-05-12 15:55:01 +08:00
以前看过vsftpd的源代码,没用过PAM.

刚找了下:
你那个错误在prelog.c:282行,对应函数是handle_pass_command,这个函数是处理PASS(FTP协议)时执行的,用来验证密码。走到这里,说明密码验证失败。

你可以debug编译(更改Makefile的link选项,我记得它是在link时指定去掉调试信息的,不去掉加-g也没用),然后单步追踪。看看问题在哪里。

VSFTPD为了安全,在默认的twoprocess下用sockpair进行进程间通信,只有那个保留root权限的进程才执行验证功能,另外一个drop权限后进行服务。这样的话调试比较麻烦,你可以在配置文件中设置为oneprocess.

最后PAM验证的部分貌似在sysdeputil.c:vsf_sysdep_check_auth中。根据这里的条件编译,请先确保你执行的版本编译选项没问题(我不知道怎么看,apt-cache show貌似没有,编译选项应该没保存在程序里),这里的PAM_RHOST/PAM_TTY/PAM_USER我没接触过,不知道是什么东东。
Shared
2014-05-12 16:09:27 +08:00
我的 vsftpd 是直接从源里安装的,你发的东西貌似没有可操作性啊
auser
2014-05-12 16:15:14 +08:00
@Shared 那就等高人回答吧 问题我先记下了 等假期到了这么玩试试

vsftpd支持virtual users 可以看看
rqrq
2014-05-12 16:22:13 +08:00
请参照:
http://wiki.ubuntu.org.cn/Vsftpd%E8%99%9A%E6%8B%9F%E7%94%A8%E6%88%B7%E8%AE%BE%E7%BD%AE

给你个vsftp的配置:
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=23321
pasv_max_port=23421
local_enable=YES
guest_enable=YES
guest_username=daemon
user_config_dir=/etc/vsftpd_user_conf
write_enable=YES
local_umask=022
anon_umask=022
local_root=/data/wwwroot/
chroot_local_user=YES
chroot_list_enable=NO
anon_other_write_enable=YES
virtual_use_local_privs=YES
anonymous_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

另外2.3.5有个蛋疼之处是根目录不允许写入权限,所以要在外面再套一层。
可以考虑下载2.3.2的deb包安装,再锁住不让升级。
Shared
2014-05-12 16:27:43 +08:00
@rqrq 这个教程我也看过,结果是一样的。不允许写根目录不是啥问题,上传都用的是 FTP 软件,这样反而安全。我再试试,不行换 PureFTPd 算了。
cevincheung
2014-05-13 01:56:06 +08:00
还是用proftp吧。配置简单,支持sqlite/mysql/pgsql都好搞。能给每个用户绑定不同的系统用户。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/112167

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX