vsftpd

vsftpd:

    程序环境:

        配置文件:/etc/vsftpd/vsftpd.conf

        主程序:/usr/sbin/vsftpd

        Unit File:/usr/lib/systemd/system/vsftpd.service

        文件路径映射:/var/ftp 

            ftp://ftp.magedu.com/pub/a.txt  –> /var/ftp/pub/a.txt

            用户的家目录的映射:访问ftp必须以某个系统用户的身份,此用户的家目录即文档目录;

            匿名用户:anonymous,要映射为一个系统用户,默认ftp;

        

    用户种类:

        匿名用户、系统用户、虚拟用户

    配置vsftpd:

        配置文件:vsftpd.conf

            directive value

            注意:directive之前不能有任何字符;

        匿名用户:

        anonymous_enable=YES

        anon_upload_enable=YES

        anon_mkdir_write_enable=YES

        anon_other_write_enable=YES

        系统用户:

            local_enable=YES

            write_enable=YES

            辅助认证配置文件/etc/vsftpd/ftpusers:

                pam认证的配置文件:/etc/pam.d/vsftpd

                chroot_local_users=YES

    禁锢所有的本地用户于自己的家目录中;但需要事先移除用户对家目录的写权限;

                chroot_list_enable=YES

                chroot_list_file=/etc/vsftpd/chroot_list 

    禁锢指定的文件中的用户于自己的家目录中;但需要事先移除用户对家目录的写权限;

        数据传输日志:

            xferlog_std_format=YES

            xferlog_enable=YES

            xferlog_file=/var/log/xferlog

        控制可登录vsftpd服务的用户列表:

            userlist_enable=YES

                是否启用/etc/vsftpd/user_list文件来可登录的用户;

            userlist_deny={YES|NO}

                YES:黑名单

                NO:白名单

    虚拟用户:

        用户账号存储于何处?

            文件,MySQL,Redis, …

        vsftpd的认证功能托管给pam:

            Pluggable Authencate Module,认证框架,认证库;

            通过模块完成认证功能:/usr/lib64/security/

            pam_mysql模块:

# ./configure –with-pam=/usr –with-mysql=/usr –with-pam-mods-dir=/usr/lib64/security

            # make

            # make install 

            准备数据库:

            mysql> CREATE DATABASE vsftpd;

            mysql> CREATE TABLE vsftpd.users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(30) NOT NULL UNIQUE KEY,password CHAR(48));

            mysql> INSERT INTO vsftpd.users (name,password) VALUES ('tom',PASSWORD('mageedu')),('jerry',PASSWORD('mageedu'));

            mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'mageedu';

            mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu';

            mysql> FLUSH PRIVILEGES;

            vsftpd通过pam_mysql进行认证的配置文件:/etc/pam.d/vsftpd.mysql

            auth required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

            account required /usr/lib64/security/pam_mysql.so user=vsftpd passwd=mageedu host=127.0.0.1 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

            user:连接mysql服务器的用户名,此用户要有权限访问认证vsftpd服务的数据库;

                passwd:上面的用户的密码; 

                host:mysql服务器主机地址;

                db:认证vsftpd服务的数据库名称;

                table:存放了用户和密码的表;

                usercolumn:用户名对应的字段;

                passwdcolumn:密码对应的字段;

                crypt:密码加密方法;

            准备匿名用户映射的系统用户账号:

                # mkdir /ftproot 

                # useradd  -d /ftproot  vuser

                # mkdir /ftproot/{pub,upload}

                # setfacl -m u:vuser:rwx  /ftproot/upload

            配置vsftpd:vsftpd.conf

                pam_service_name=vsftpd.mysql

                guest_enable=YES

                guest_username=vuser

            配置每匿名用户有单独的权限设定

                vsftpd.conf,添加:

                    user_config_dir=/etc/vsftpd/users_conf

                创建目录:

                    # mkdir /etc/vsftpd/vusers_conf

                为每用户提供配置文件:

                    /etc/vsftpd/vusers_conf/{tom,jerry}

                配置权限的指令:

                    anon_upload_enable

                    anon_mkdir_write_enable

                    anon_other_write_enable

原创文章,作者:songzizhe,如若转载,请注明出处:http://www.178linux.com/55874

(0)
songzizhesongzizhe
上一篇 2016-12-05 17:03
下一篇 2016-12-05 17:03

相关推荐

  • 亿级用户下的新浪微博平台架构

    序言     新浪微博在2014年3月公布的月活跃用户(MAU)已经达到1.43亿,2014年新年第一分钟发送的微博达808298条,如此巨大的用户规模和业务量,需要高可用(HA)、高并发访问、低延时的强大后台系统支撑。 微博平台第一代架构为LAMP架构,数据库使用的是MyIsam,后台用的是php,缓存为Memcache。 随着应用规模…

    2015-03-16
  • shell编程基础一(多种方法求值1+2+..+100)

    #SHELL编程基础一(多种方法求值1+2+..+100)##为什么要学好shell shell脚本语言是实现linux系统管理及自动化运维所必备的重要工具,linux系统的底层及基础应用软件的核心大都涉及shell脚本的内容。 每一个合格的linux系统管理员或运维工程师,都需要能够熟练地编写shell脚本语言,并能够阅读系统及各类软件…

    Linux干货 2017-08-26
  • 一起学DHCP系列(一)开篇、概述

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/162108     从本节开始,我们将开始讨论有关DHCP服务器的相关问题,从易到难一步步理解DHCP服务。还是一样,在…

    Linux干货 2015-03-25
  • 查找find及压缩与解压

    find  根据时间戳:以“天”为单位;              -atime [+|-]#,                #: [#,#+1)   2 那就是大于等于二天小于…

    2017-08-12
  • 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)

    1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力。当对象们连接在一起时,它们就可以相互提供服务和信息。 通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信。但是出于各种原因,你也许并不愿意因为代码环境的改变而对代码做大的修改。也许,你只想根据你的具体应用环境而改进通信代码。或者,你只想简单的重新构造通信代码来避免类和类…

    Linux干货 2015-07-24
  • BIND的编译安装\DNS的搭建及测试

    编译安装bind          1、下载bind: isc.org: bind-9.10 bind-9.11 bind-10          2、 #tar xvf bind-9.10.5.tar.gz       &nbs…

    2017-07-31