Linux服务-FTP文件服务器部署

FTP服务搭建

  • 简介
    • 文件传输协议
    • FTP共享是基于TCP/IP协议
    • C/S
    • FTP服务器共享按照文件目录来组织的
    • FTP只支持TCP不支持UDP
    • 两个端口:一个数据端口一个控制端口(命令端口)
  • 端口
    • 21端口
      • 命令端口,用于接受客户端执行的FTP命令
    • 20端口
      • 数据传输,用于上传下载文件数据
    • 由于FTP工作方式四不同,数据端口不一定一直是20(想念那年软考的这一题)
      • 分为主动FTP与被动FTP
        • 主动模式从服务端向客户端发起连接,被动模式客户端向服务端发起连接
          • 两者都是21端口进行用户验证管理
          • 差别在于数据端口不同
        • 主动模式(Standard/Active):FTP服务端主动向FTP客户端发起连接请求
          • 主动的连接方式的FTP客户端从一个任意的非特权端口N(高位端口N>1024)连接到FTP服务端的命令端口21
          • 然后客户端开始监听N+1,并发送FTP命令"port N+1"到FTP服务器
          • 接着服务器会从自己的数据端口20连接到客户端指定的数据端口(N+1)
          • 主动模式下,服务器开启的是20和21两个端口,客户端连接的是大于1024的高位端口
        • 被动模式(Passive/PASV):FTP服务端等待FTP客户端发起连接请求
          • 由客户端主动发起,当开启一个FTP连接时,客户端打开任意两个高位端口(N>1024.N+1)
          • 第一个端口会连接服务端21端口,但与主动模式不同,客户端不会发起post命令,而是提交PASV命令
          • 此时服务器会开启一个任意的高位端口,并发送,命令PORT P发送到客户端
          • 客户端从本地端口N+1连接到服务器的P端口用来传输数据
          • 数据段不再是20,而是任意的高位端口
  • FTP服务器实现
    • 服务端
      • 软件
        • vsftp,proftpd,wuftpd,puireftpd
        • 一般常用vsftp
        • 小巧轻快,安全易用
      • vsftp
        • 安装
          • yum install vsftpd -y
          • rpm -qa | grep vsftpd
        • 配置
          • 临时关闭selinux
            • setenforce 0
          • 运行防火墙通过
            • firewall-cmd --permanent --add-service=ftp
            • firewall-cmd --reload
          • 重启服务
            • systemctl restart vsftpd
            • systemctl enable vsftpd
          • 修改配置文件
            • /etc/vsftpd/vsftpd.conf
          • 配置匿名FTP服务
            • 将默认的目录赋予用户ftp权限以便上传
              • chown -R ftp /var/ftp/pub
            • 修改配置文件
              • 重启服务
          • 配置实名FTP服务
            • 创建普通用户用于登录
              • useradd jack
              • passwd jack
            • 修改配置文件
            • 查看用户列表
          • 配置虚拟用户模式
            • 因为虚拟用户模式的账号和口令都不是真实系统中存在的,所以配置虚拟用户模式会比本地用户更加安全。
            • 创建虚拟用户数据库
            • vim /etc/vsftpd/vlogin
              • susa
              • susa
              • zom
              • zom
            • 使用db_load命令用hash算法生成FTP用户数据库文件vlogin.db
              • db_load -T -t hash -f /etc/vsftpd/vlogin /etc/vsftpd/vlogin.db
              • chmod 600 /etc/vsftpd/{vlogin,vlogin.db}
            • 创建pam文件,设置基于虚拟账户验证
              • linux中一般通过pam文件设置账号的验证机制,然后通过创建新的pam文件使用新的数据文件进行登录验证
              • pam文件的db选项用于指定并验证账户和密码的数据库文件,数据库文件无需.db结尾
              • vim /etc/pam.d/vsftpd.pam
                • auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
                • account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
              • 设置虚拟账户的共享目录
                • 所有的虚拟账号都需要映射到一个真实的虚拟账号
                • useradd -s /sbin/nologin -d /home/ftp virtual
                • echo "hello" > /home/ftp/test.txt
              • 修改配置文件
                • vim /etc/vsftpd/vsftpd.conf
              • 为每个用户设置独立的共享路径
                • 通过在主配置文件中使用user_config_dir选项,设置一个基于账户的配置目录
                • 该目录下可以创建若干个与账户名称同名的文件,并在文件中此账户设置独立的配置选项,包括权限、路径等
                • mkdir /etc/vsftpd_user_conf
                • vim /etc/vsftpd_user_conf/susa
                  • local_root=/home/ftp/$USER
              • 重启服务
                • systemctl restart vsftpd
  • 客户端
    • ftp
    • 多种客户端软件
    • 安装
      • yum install ftp
      • apt install ftp
    • 使用
      • 使用
        • 浏览器输入
        • 软件连接
      • 发现创建目录失败可能Selinux问题,修改规则
        • setsebool -P ftpd_full_access=on
        • systemctl restart vsftpd.service

猜你喜欢

转载自blog.csdn.net/zhouchen1998/article/details/86601648
今日推荐