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

相关推荐

  • 第三周作业

    第三周  文本处理工具:             linux上文本处理三剑客:                      grep、egrep、fgrep:文本过滤工具(模式pat…

    Linux干货 2016-12-18
  • bash基础 if elif 多条件判断 for循环

    bash基础 if elif 多条件判断 for循环

    Linux干货 2017-10-31
  • sed工具 介绍

    sed工具 地址定界 不给地址:对全文进行处理 单地址: #:指定行 /pattern/:被此处模式所能够匹配到的每一行 地址范围: #,# #,+# /pat1/,/pat2/ #,/pat1/ ~:步进 1~2 奇树行 2~2 偶数行 cat -n passwd >passwd2 新建文件 sep -n ‘/^h//^s/’…

    Linux干货 2017-05-31
  • shell编程基础一(多种方法求值1+2+..+100)

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

    Linux干货 2017-08-26
  • 磁盘分区知识总结

    Linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 1.命令格式: df [选项] [文件] 2.命令功能: 显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以&nbsp…

    Linux干货 2017-08-19
  • ansible学习笔记之1

    ansible学习笔记之1 ansible学习笔记之1 ansible 基础 ad-hoc 基础概念 ansible学习笔记之1 说说运维工具的类型 > 运维工具按是否需要有代理程序来划分分为两类:      agent(需要代理工具):          基于专用的age…

    2016-11-21