Linux搭建FTP详细流程

一、介绍

文件传输协议(File Transfer Protocol,FTP),是一种在互联网中进行文件传输的协议,基于客户端/服务器模式,默认使用 20、21 号端口,其中 20 端口是数据端口用于进行数据传输,21 端口为命令端口,用于接收客户端发出的相关 FTP 命令和参数。FTP 是 C/S 架构,也就是基于客户端/服务器的模式,FTP 服务器是按照 FTP 协议在互联网上提供文件存储和访问服务的主机,FTP 客户端则是向服务器发送连接请求,以建立数据传输链路的主机。

二、工作模式

FTP 协议工作模式有两种:主动模式和被动模式,其中被动模式是默认的工作模式。

主动模式:FTP 服务器主动向客户端发起连接请求。

被动模式:FTP 服务器等待客户端发起连接请求。

三、关闭Selinux和防火墙

复制代码
# 临时关闭selinux
setenforce 0
# 永久关闭selinux
vim /etc/selinux/config
#将SELINUX=enforcing改为SELINUX=disabled,然后保存退出
# 关闭firewalld
systemctl stop firewalld

四、yum安装ftp

复制代码
# 查询是有安装ftp
rpm -qa|grep vsftpd
# 卸载 vsftpd
yum remove vsftpd
# yum安装ftp
yum install -y vsftpd

五、相关检查命令

复制代码
# 查看版本号信息
vsftpd -v
# 查看ftp状态
systemctl status vsftpd.service
# 启动ftp
systemctl start vsftpd.service
# 关闭ftp
systemctl stop vsftpd.service
# 查询端口
ss -anp | grep 21
# 不关闭设置SELinux
getenforce
# 临时关闭开启
setenforce 0/1
# 查看与ftp域相关的策略
getsebool -a | grep ftp
setsebool -P ftpd_full_access on
# 不关闭防火墙的情况下
firewall-cmd --permanent --zone=public --add-service=ftp
firewall-cmd --reload
# 设置开机自启
sudo systemctl enable vsftpd

配置防火墙

确保防火墙允许 FTP 流量。如果使用的是 firewalld:

  1. 允许 FTP 服务

    复制代码
    sudo firewall-cmd --permanent --add-service=ftp
    sudo firewall-cmd --reload

创建虚拟用户环境

为了创建虚拟用户,我们首先需要安装db4-utils包来生成数据库文件,这个文件将用于存储虚拟用户的凭证。

  1. 安装 db4-utils

    复制代码
    sudo yum install db4-utils -y
  2. 创建一个用户列表文件 。例如/etc/vsftpd/virtual_users.txt,格式为每行一个用户名,然后是密码:

    复制代码
    user1
    password1
    user2
    password2
  3. 生成数据库文件

    复制代码
    sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
  4. 更改文件权限 以保护用户数据:

    复制代码
    sudo chmod 600 /etc/vsftpd/virtual_users.db

六、虚拟用户环境配置

编辑配置文件/etc/vsftpd/vsftpd.conf来设置虚拟用户的环境。

复制代码
vim /etc/vsftpd/vsftpd.conf

配置 PAM 身份验证

为了使 vsftpd 使用虚拟用户进行身份验证,需要编辑 PAM 配置文件。

  1. 编辑 PAM 文件 /etc/pam.d/vsftpd,添加以下两行:

    注意:如果有问题,则把/etc/pam.d/vsftpd中其他所有的数据删除 再插入这两行

    复制代码
    auth    required        pam_userdb.so db=/etc/vsftpd/virtual_users
    account required        pam_userdb.so db=/etc/vsftpd/virtual_users

基本配置修改

  1. 备份原始配置文件

    bash

    深色版本

    复制代码
    sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
  2. 编辑配置文件 /etc/vsftpd/vsftpd.conf,根据需要调整或添加以下设置:

    深色版本

    复制代码
    anonymous_enable=NO
    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
    
    # 以上为默认 以下为新增
    listen_ipv6=YES
    
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    
    listen_port=9021
    
    # 使用本地用户作为虚拟用户
    guest_enable=YES
    
    # 指定虚拟用户的用户名
    guest_username=ftpuser
    
    chroot_local_user=YES
    guest_enable=YES
    user_sub_token=$USER
    local_root=/home/ftpuser
    pam_service_name=vsftpd
    user_config_dir=/etc/vsftpd/vsftpd_user_conf
    virtual_use_local_privs=YES
    
    pasv_enable=YES
    pasv_address=132.232.124.126
    pasv_promiscuous=NO
    pasv_min_port=10000
    pasv_max_port=10100
  3. 为每个虚拟用户创建一个目录 ,并将它们指向正确的本地根目录。例如,对于user1,可以这样做:

    复制代码
    sudo mkdir -p /home/ftpuser
    sudo chown nobody:nobody /home/ftpuser
    sudo chmod 777 /home/ftpuser
  4. 可选 :为每个用户创建单独的配置文件,放置在/etc/vsftpd/user_conf目录下。例如,为user1创建配置文件:

    复制代码
    sudo mkdir -p /etc/vsftpd/user_conf
    sudo touch /etc/vsftpd/user_conf/ftpuser
  5. 重启 vsftpd 服务 以应用更改:

    复制代码
    sudo systemctl restart vsftpd
相关推荐
Mr. Cao code19 小时前
Docker:颠覆传统虚拟化的轻量级革命
linux·运维·ubuntu·docker·容器
Dontla19 小时前
Docker多共享网络配置策略(Docker多网络、Docker networks、Docker Compose网络、Docker网络、Docker共享网络)
网络·docker·容器
抓饼先生20 小时前
Linux control group笔记
linux·笔记·bash
LUCIAZZZ20 小时前
HTTPS优化简单总结
网络·网络协议·计算机网络·http·https·操作系统
挺6的还20 小时前
25.线程概念和控制(二)
linux
wanhengidc20 小时前
云手机运行流畅,秒开不卡顿
运维·网络·科技·游戏·智能手机
您的通讯录好友20 小时前
conda环境导出
linux·windows·conda
名誉寒冰21 小时前
TCP 拥塞控制与四次挥手解析
网络·网络协议·tcp/ip
笨小孩@GF 知行合一21 小时前
OSPF实验:外部路由引入
运维·网络·hcip·数通·ospf
Fireplusplus21 小时前
TCP MSS
网络·网络协议·tcp/ip