zoukankan      html  css  js  c++  java
  • centos7-vsftpd文件服务器

    FTP简介:

    文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,主要用于控制FTP连接信息,同时再生成一个单独的TCP连接用于FTP数据传输。用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

    FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。

    传输模式:

    FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。主被动模式如图8-2(a)、8-2(b)所示,主被动模式详细区别如下:

      FTP主动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。

      FTP被动模式:客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

     vsftpd服务安装:

    [root@localhost ~]# systemctl stop firewalld
    [root@localhost ~]# setenforce 0
    [root@localhost ~]# yum -y install vsftpd

    匿名用户配置:

    [root@localhost ~]# grep -Ev "^$|^#" /etc/vsftpd/vsftpd.conf

    anonymous_enable=YES      #开启匿名用户访问
    anon_upload_enable=YES      #允许匿名用户上传文件
    anon_mkdir_write_enable=YES  #允许匿名用户创建目录
    anon_other_write_enable=YES  #允许匿名用户其他写入权限
    local_enable=YES        #启用本地系统用户访问
    write_enable=YES        #本地系统用户写入权限
    local_umask=022        #本地用户创建文件及目录默认权限掩码
    dirmessage_enable=YES    #打印目录显示信息,通常用于用户第一次访问目录时,信息提示
    xferlog_enable=YES      #启用上传/下载日志记录
    connect_from_port_20=YES  #使用20端口进行数据传输
    xferlog_std_format=YES    #日志文件将根据xferlog的标准格式写入
    listen=NO            #Vsftpd不以独立的服务启动,通过Xinetd服务管理
    listen_ipv6=YES        #启用IPV6监听
    pam_service_name=vsftpd    #登录FTP服务器,依据/etc/pam.d/vsftpd中内容进行认证
    userlist_enable=YES      #vsftpd.user_list和ftpusers配置文件里用户禁止访问FTP
    tcp_wrappers=YES       设置vsftpd与tcp wrapper结合进行主机的访问控制,Vsftpd服务器检查/etc/hosts.allow 和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器

    [root@localhost ~]# chown -R ftp /var/ftp/pub/
    [root@localhost ~]# chmod o+w /var/ftp/pub/

    重启vsftpd服务,访问测试上传、删除、创建等权限:

    ftp默认被动模式,设置为主动模式使用端口方法:

    pasv_enable=YES
    pasv_min_port=60000
    pasv_max_port=60100

     vsftpd虚拟用户配置:

    Vsftpd虚拟用户原理:虚拟用户就是没有实际的真实系统用户,而是通过映射到其中一个真实用户以及设置相应的权限来实现访问验证,虚拟用户不能登录Linux系统,从而让系统更加的安全可靠。

    1)安装vsftpd虚拟用户需要用到的软件及认证模块:

    [root@localhost ~]# yum -y install pam* db4

    2)创建虚拟用户临时文件:

    [root@localhost ~]# vim /etc/vsftpd/vuser.txt

    ftp001
    123456
    ftp002
    123456

    3)生成vsftpd虚拟用户数据库认证文件:

    [root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vsftpd_login.db
    [root@localhost ~]# chmod 600 /etc/vsftpd/vsftpd_login.db

    4)配置pam认证文件:

    [root@localhost ~]# vim /etc/pam.d/vsftpd

    auth      required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
    account   required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login

    5)创建系统用户,用于虚拟用户映射使用

    [root@localhost ~]# useradd -s /sbin/nologin ftpuser

    6)vsftpd.conf主配置文件:

    #global config Vsftpd 2017
    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    userlist_enable=YES
    tcp_wrappers=YES
    #config virtual user FTP
    pam_service_name=vsftpd              #虚拟用户启用pam认证
    guest_enable=YES                  #启用虚拟用户
    guest_username=ftpuser                #映射虚拟用户至系统用户ftpuser
    user_config_dir=/etc/vsftpd/vsftpd_user_conf  #设置虚拟用户配置文件所在目录
    virtual_use_local_privs=YES            #虚拟用户使用与本地用户相同的权限

    7)vsftpd虚拟用户配置文件:

    [root@localhost ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf
    [root@localhost ~]# vim /etc/vsftpd/vsftpd_user_conf/ftp001

    local_root=/home/ftpuser/ftp001    #虚拟用户文件路径
    write_enable=YES              #允许登录用户写权限
    anon_world_readable_only=YES      #允许匿名用户下载
    anon_upload_enable=YES          #允许匿名用户上传权限,只有在write_enable=YES时该参数才生效
    anon_mkdir_write_enable=YES      #允许匿名用户创建目录,只有在write_enable=YES时该参数才生效
    anon_other_write_enable=YES      #允许匿名用户其他权限,例如删除、重命名等

    9)创建虚拟用户的目录:

    [root@localhost ~]# mkdir -p /home/ftpuser/{ftp001,ftp002}
    [root@localhost ~]# chown -R ftpuser:ftpuser /home/ftpuser

    10)重启vsftpd,测试:

  • 相关阅读:
    iOS开发JSON文件解析数据成Model的过程简单介绍
    ios 开发中 --做登陆注册时编译出现的错误和解决方法
    iOS 开发 SMSSDK-免费短信获取的实现方法
    IOS 设计 面试题及答案
    Cycle (KMP + hash)
    ATM Mechine (概率DP)
    Bubble Sort (找规律)
    The All-purpose Zero (最长公共子序列)
    Substring (后缀数组 + 计数)
    Lucky 7 (容斥原理 + 中国剩余定理)
  • 原文地址:https://www.cnblogs.com/yuezhimi/p/7792096.html
Copyright © 2011-2022 走看看