如何在 Ubuntu 上配置 vsftpd + pam 使之支持虚拟用户? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Shared
V2EX    Linux

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

  •  1
     
  •   Shared
    vayn 2014-05-12 15:25:02 +08:00 3408 次点击
    这是一个创建于 4238 天前的主题,其中的信息可能已经有所发展或是发生改变。
    系统情况:Ubuntu 12.04 + vsftpd 2.3.5 + db5.1

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

    如果不用 pam,使用本地用户直接登录,倒是没什么问题。可是系统里加一堆用户实在不方便,有人成功配置过 vsftpd + pam 认证吗?
    6 条回复    2014-05-13 01:56:06 +08:00
    auser
        1
    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
        2
    Shared  
    OP
       2014-05-12 16:09:27 +08:00
    我的 vsftpd 是直接从源里安装的,你发的东西貌似没有可操作性啊
    auser
        3
    auser  
       2014-05-12 16:15:14 +08:00
    @Shared 那就等高人回答吧 问题我先记下了 等假期到了这么玩试试

    vsftpd支持virtual users 可以看看
    rqrq
        4
    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
        5
    Shared  
    OP
       2014-05-12 16:27:43 +0:00
    @rqrq 这个教程我也看过,结果是一样的。不允许写根目录不是啥问题,上传都用的是 FTP 软件,这样反而安全。我再试试,不行换 PureFTPd 算了。
    cevincheung
        6
    cevincheung  
       2014-05-13 01:56:06 +08:00
    还是用proftp吧。配置简单,支持sqlite/mysql/pgsql都好搞。能给每个用户绑定不同的系统用户。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5180 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 22ms UTC 08:40 PVG 16:40 LAX 00:40 JFK 03:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86