美文网首页
CentOS7 部署FTP文件传输服务器

CentOS7 部署FTP文件传输服务器

作者: vincent浩哥 | 来源:发表于2019-10-18 20:28 被阅读0次
    • FTP文件服务器介绍
      FTP是一种文件传输服务器,默认使用TCP协议的20、21端口与客户端进行通信20端口用于建立数据连接,并传输文件数据21端口用于建立控制连接,并传输FTP控制命令;

    • 数据连接分为主动模式和被动模式
      主动模式:服务器向客户端主动发起数据连接(PORT 模式)
      被动模式:客户端向服务器主动发起数据连接(PASV 模式)

    • FTP服务器软件的种类

    凡是可通过文件传输协议(File Transport Protocol)下载文件服务器上的文件,以实现资源共享的,我们称之为ftp服务器

    FTP服务器软件包括FileZilla Sener、Serv-U、IIS等。而在Linux系统中,vsftpd是目前在Linux/UNIX领域应用比较广泛的一款FTP服务软件,特点是速度快,安全易用,并发量高,可以支持15000个用户并发连接

    • 用户类型

    匿名用户:就是不需要用户名,密码。就能登录到服务器电脑里面

    本地用户:需要帐户名和密码才能登录。而且,这个帐户名和密码,都是在你 linux 系统里面,已经有的用户。

    虚拟用户:同样需要用户名和密码才能登录。但是和上面的区别就是,在linux 系统中是没有该用户帐号

    • 搭建匿名访问 vsftpd 服务
    检查是否已经安装vsftpd软件包
    rpm -qa vsftpd
    
    yum 安装 vsftpd
    yum -y install vsftpd
    
    查找 vsftpd 的文件位置
    whereis vsftpd
    
    启动 ftp 服务
    systemctl start vsftpd
    
    查看监听的端口号
    netstat -tunlp | grep vsftpd
    
    查看防火墙的状态
    firewall-cmd --state
    
    创建测试文件
    mkdir -p /var/ftp/pub/ && echo "this is ftptest" >test.txt
    
    使用 windows 客户端访问
    ftp://192.168.10.1/
    
    安装 FTP 客户端工具
    yum -y install ftp
    
    连接vsftpd
    ftp 192.168.10.1
    
    下载文件
    get test.txt
    
    上传文件
    put test.txt
    
    退出
    quit 或者 exit
    
    • 配置本地用户访问 vsftpd 服务
    关闭之前的匿名访问:
    vi /etc/vsftpd/vsftpd.conf  #编辑配置文件
    anonymous_enable=NO
    
    systemctl restart vsftpd   #重新启动服务
    
    mkdir -p /var/ftp/html    #创建目录
    
    useradd -g root -M -d /var/ftp/html -s /sbin/nologin ftptest #添加系统用户
    
    chown -R ftptest:root /var/ftp/html #配置权限
    
    passwd ftptest #设置密码
    
    cd /var/ftp/html && echo "this is ftptest" >ftptest.txt #添加测试文件
    
    使用 windows 客户端访问:
    ftp://192.168.10.1/
    
    配置文件/etc/vsftp/vsftpd.conf 的一些常用权限解释:
    
    anonymous_enable=YES 允许匿名用户访问
    write_enable=YES 允许登录用户有写权限。属于全局设置
    anon_root=var/ftp 指定匿名用户登录的目录
    anon_upload_enable=YES 允许匿名用户有上传文件的权限
    anon_mkdir_write_enable=YES 允许匿名用户有新增目录的权限
    chown_username=username 设置匿名用户上传文件的属主名
    
    • 配置虚拟用户的 vsftpd 服务
      虚拟用户访问 vsftpd 服务是得经过用户认证的,虚拟用户的用户认证是通过 pam 方式去认证的,pam 文件里面指定了认证的db 文件,db 文件又是通过明文用户名和密码文件生成而来

    (1)第一步指定 pam 文件(系统默认已经指定了):
    vi /etc/vsftpd/vsftpd.conf
    pam_service_name=vsftpd

    (2)第二步编辑pam 文件指定认证的db 文件:/etc/pam.d/vsftpd,把文件内容全部注释掉,在最上面 加
    上以下俩行配置:

    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
    
    [root@vincent html]# vi /etc/pam.d/vsftpd
    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
    
    #%PAM-1.0
    #session  optional   pam_keyinit.so  force revoke
    #auth    required  pam_listfile.so item=user sense=deny
    file=/etc/vsftpd/ftpusers onerr=succeed
    #auth    required  pam_shells.so
    #auth    include   password-auth
    #account  include   password-auth
    #session  required   pam_loginuid.so
    #session  include   password-auth
    

    (3)第三步生成 db 文件,由于 db 文件是通过明文用户名和密码文件生成而来,所以先创建一个保存明文用户名和密码的文件 vuser_passwd.txt

    vi /etc/vsftpd/vuser_passwd.txt  #该文件奇行为用户名,偶行为密码
    
    通过以下命令生成 db 文件:
    cd /etc/vsftpd/ && db_load -T -t hash -f vuser_passwd.txt vuser_passwd.db
    

    (4)接下来就是根据需要和以上各文件信息来修改配置文件 /etc/vsftpd/vsftpd.conf 了,启用或更改以下配置的值

    vi /etc/vsftpd/vsftpd.conf
    
    anonymous_enable=NO #禁用匿名登录
    ascii_upload_enable=YES
    ascii_download_enable=YES
    chroot_local_user=YES  #启用限定用户在其主目录下
    
    手动添加:
    guest_enable=YES        #设定启用虚拟用户功能
    guest_username=ftptest     #指定虚拟用户的宿主用户,CentOS 中已经有内置的ftp 用户了
    user_config_dir=/etc/vsftpd/vuser_conf #虚拟用户配置文件存放的路径
    allow_writeable_chroot=YES   #如果启用了限定用户在其主目录下需要添加这个配置
    

    (5)对虚拟用户权限与路径进行配置

    mkdir /etc/vsftpd/vuser_conf    #创建一个目录存放文件
    
    vi /etc/vsftpd/vuser_conf/xiaoming #创建一个以虚拟用户名的文件(文件名一定要与登录名一样)
    
    [root@vincent vsftpd]# vi vuser_conf/xiaoming
    local_root=/var/ftp/xiaoming
    write_enable=YES
    anon_umask=022
    anon_world_readable_only=NO
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=yes
    
    • 配置系统用户的 FTP与配置虚拟用户的 FTP 共存
    修改配置文件/etc/pam.d/vsftpd,把原来的auth required改为auth sufficient
    
    [root@vincent html]# vi /etc/pam.d/vsftpd
    auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
    
    account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
    
    # %PAM-1.0
    session  optional   pam_keyinit.so  force revoke
    auth    required   pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers
    onerr=succeed
    auth    required   pam_shells.so
    auth    include   password-auth
    account  include   password-auth
    session  required   pam_loginuid.so
    session  include   password-auth
    

    相关文章

      网友评论

          本文标题:CentOS7 部署FTP文件传输服务器

          本文链接:https://www.haomeiwen.com/subject/iyfcmctx.html