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 · 2889 次点击
    这是一个创建于 3638 天前的主题,其中的信息可能已经有所发展或是发生改变。
    系统情况: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 +08:00
    @rqrq 这个教程我也看过,结果是一样的。不允许写根目录不是啥问题,上传都用的是 FTP 软件,这样反而安全。我再试试,不行换 PureFTPd 算了。
    cevincheung
        6
    cevincheung  
       2014-05-13 01:56:06 +08:00
    还是用proftp吧。配置简单,支持sqlite/mysql/pgsql都好搞。能给每个用户绑定不同的系统用户。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3072 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:39 · PVG 08:39 · LAX 17:39 · JFK 20:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.