开发者社区> 问答> 正文

appcomb.com的网站日记安装部署vsftpd

租用了服务器,挂接了硬盘,头几天还在自己有台不断电的网络电脑的新奇和兴奋中,这种感觉不亚于自己第一次拥有一台苹果笔记本时的感觉。
没有有事没事就登陆操作一下,其实主要是ls一下,没什么实际工作 :b
作为开发和试运营的网站环境,要安装的组件太多了,一个一个来吧,觉得还是先要从ftp入手,这样至少可以上传备份资料。

安装vsftpd软件
        sudo apt-get install vsftpd

创建虚拟账户
    安装支持软件:
        sudo apt-get install db-util //db-util 用于生成认证文件,不同的ubuntu版本可能该软件版本不一样
    创建vsftpd的虚拟用户口令的文本文件:
        vi /etc/vsftpd_account.txt
        奇数行为用户名。偶数行为密码,上面建立了密码为admin的admin用户,支持创建多个用户,每个用户增加两行配置即可
    内容为:
        ///////////////////////////////////////
        ftpusername
        password123
        ///////////////////////////////////////

    建立虚拟用户口令库文件
        db_load -T -t hash -f /etc/vsftpd_account.txt /etc/vsftpd_account.db
        chmod 600 /etc/vsftpd_account.db

    因为需要pam_userdb.so这个库但是配置的路径下没有,所以通过连接解决路径下找不到该库的问题
        sudo ln -s /lib/x86_64-linux-gnu/security/pam_userdb.so /lib/security/pam_userdb.so

    建立虚拟用户所需的PAM配置文件
        vi /etc/pam.d/vsftp.vu
    内容为:
        ///////////////////////////////////////
        auth required /lib/security/pam_userdb.so db=/etc/vsftpd_account
        account required /lib/security/pam_userdb.so db=/etc/vsftpd_account

        ///////////////////////////////////////

    创建账户并制定用户路径
        useradd -d /appdata/ftp virtual_user
        chmod 700 /appdata/ftp



配置vsftpd
    vi /etc/vsftpd.conf



    配置文件(去掉了注释说明部分):
    ///////////////////////////////////////
    listen=YES
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    dirmessage_enable=YES
    use_localtime=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_file=/var/log/vsftpd.log
    xferlog_std_format=YES

    ftpd_banner=Welcome to APPCOMB FTP service.

    chroot_local_user=YES
    guest_enable=YES
    guest_username=virtual_user
    user_config_dir=/etc/vsftpd_user_conf

    secure_chroot_dir=/var/run/vsftpd/empty

    pam_service_name=vsftp.vu

    rsa_cert_file=/etc/ssl/private/vsftpd.pem
    ///////////////////////////////////////

    vsftpd服务操作:
    启动 sudo service vsftpd start
    重启 sudo service vsftpd restart
    停止 sudo service vsftpd stop

    配置启动之后,总是报500 OOPS: vsftpd: refusing to run with writable root inside chroot()错误;
    经查询之后发现,为了避免一个安全漏洞,从 vsftpd 2.3.5 开始,chroot 目录的权限必须为不可写。

    500 OOPS: vsftpd: refusing to run with writable root inside chroot()
    意思是,如果开启了chroot来控制用户路径,则用户不能再具有该用户根目录的写的权限。
    解决办法1:
        去掉该用户根目录的写的权限,再新建一目录,以后用新目录
        sudo chmod a-w /home/用户名
        sudo mkdir /home/用户名/新目录名
        其实很不方便,用户登陆进去会发现必须要再进一层目录才能找到自己的文件

    如果非要保证ftp用户根目录可写,
    解决办法2:
        在vsftpd.chroot_list上写进去我们不要限制的用户,其他用户则不让他们“漂移”。一个用户名一行
        sudo vim /etc/vsftpd.chroot_list
        但这样也有风险,这个ftp用户可以去浏览系统其它目录了,失去了chroot设置意义了。

    有没有更好的办法,既能使用chroot功能,又能不去掉该用户根目录的写的权限?



安装配置时学习参考的资料地址:
http://blog.csdn.net/hanvy_xia/article/details/8282189

展开
收起
wang 2014-06-12 15:46:35 11154 0
1 条回答
写回答
取消 提交回答
  • Reappcomb.com的网站日记安装部署vsftpd
    谢谢分享
    2014-06-20 08:41:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载