Linux FTP服务器

Gweek Lv4

一、FTP服务器介绍

FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机之间传输文件的标准网络协议。

1.应用场景:

文件上传和下载:FTP允许用户从服务器上下载文件到本地计算机或将本地文件上传到服务器。这在网站维护、文件共享、备份等场景中非常常见。
文件管理:用户可以通过FTP在远程服务器上管理文件,包括创建、删除、重命名文件和目录,修改文件权限等操作。
批量传输:FTP支持批量文件传输,可以一次性传输多个文件或整个目录,这在处理大量数据时非常有效。

2.工作机制

FTP使用客户端-服务器模型,分为两个通道:控制通道和数据通道。

控制通道:用于发送命令和接收服务器响应。

数据通道:用于实际传输文件数据。

3.FTP的端口号

FTP的传输涉及两个主要端口号:
控制端口(21端口):这是FTP服务器监听的端口,用于接收来自FTP客户端的命令。所有的命令和响应都通过此端口进行传输。
数据端口:用于传输文件数据,有两种模式:
主动模式(Active Mode):服务器从20端口(数据端口)主动连接客户端指定的端口传输数据。FTP的默认模式。
被动模式(Passive Mode):服务器打开一个随机的高位端口(大于1023),告诉客户端这个端口号,然后客户端主动连接这个端口进行数据传输。这种模式通常用于解决防火墙和NAT(网络地址转换)的问题。

1
2
3
4
5
vim /etc/vsftpd/vsftpd.conf
#添加以下内容
pasv_enable=YES
port_enable=NO
#以上命令是将主动模式变更为被动模式

二、用户类型

在Linux下使用FTP时,用户类型主要可以分为匿名用户、本地用户、虚拟用户

  1. 匿名用户(Anonymous User)

匿名用户访问是一种无需特定账户和密码的FTP访问方式,通常用于公开文件的下载。在匿名访问中,用户使用“anonymous”作为用户名,密码一般是任意字符串或邮箱地址。

  1. 本地用户(Local User)

本地用户是指系统中的实际用户账户,他们可以使用其系统用户名和密码通过FTP访问其主目录或指定的目录。每个本地用户在FTP服务器上有独立的权限设置。

  1. 虚拟用户(Virtual User)

虚拟用户是一种在FTP服务器中定义的用户,这些用户不需要在操作系统中存在实际的用户账号。虚拟用户可以与系统用户或匿名用户分开管理,通常用于需要独立用户管理的FTP服务。

三、配置文件

配置文件目录通常位于/etc/vsftpd/vsftpd.conf

参数 说明
listen: 是否以独立运行的方式监听服务
listen_address: 设置监听FTP服务的IP地址
listen_port: 设置监听FTP服务的端口!
write_enable: 是否启用写入权限
download_enable: 是否允许下载
amonymous_enable: 是否启用匿名访问
anon_root: 匿名FTP的根目录
local_root: 是否启用本地用户的FTP根目录
local_umask: 本地用户上传的权限掩码
chroot_local user: 是否禁锢在主目录/家目录
max_clients: 限制并发的客户端个数

四、登录FTP的黑名单和黑白名单

黑名单:

目录/etc/vsftpd/ftpusers 阻止特定用户访问FTP服务器:该文件中的用户无论如何配置,都无法登录到FTP服务器。这通常包括一些系统用户和其他特定用户。

黑白名单:

目录/etc/vsftpd/user_list 文件在 vsftpd 中用于控制特定用户对 FTP 服务器的访问权限。该文件的行为取决于 vsftpd 配置文件 (/etc/vsftpd/vsftpd.conf) 中的设置,它可以用作黑名单或白名单。

1.黑名单配置:编辑配置文件/etc/vsftpd/vsftpd.conf

1
2
3
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list

编辑用户列表

1
vim /etc/vsftpd/user_list    

2.白名单配置:编辑配置文件/etc/vsftpd/vsftpd.conf

1
2
3
userlist_enable=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list

编辑用户列表文件:

1
vim /etc/vsftpd/user_list    

五、配置过程

1. 安装vsftpd软件包

首先,使用yum包管理器安装vsftpd软件包:

1
2
sudo yum install vsftpd

2. 配置vsftpd

vsftpd的主要配置文件位于/etc/vsftpd/vsftpd.conf。你可以使用任何文本编辑器来编辑这个文件:

1
2
sudo nano /etc/vsftpd/vsftpd.conf

在这个文件中,你可以配置FTP服务器的各种选项。以下是一些常用的配置选项:

  • 匿名访问:默认情况下,vsftpd不允许匿名访问。如果你希望允许匿名访问,请确保以下行被注释掉:

    1
    2
    # anonymous_enable=YES

  • 本地用户访问:默认情况下,vsftpd允许本地系统用户访问FTP服务器。确保以下行未被注释:

    1
    2
    local_enable=YES

  • 写权限:如果你希望允许用户上传文件,请确保以下行未被注释:

    1
    2
    write_enable=YES

  • 用户的根目录:默认情况下,用户登录后的根目录是他们的家目录。如果你希望指定一个特定的目录作为用户的根目录,可以设置如下:

    1
    2
    local_root=/path/to/directory

    其中/path/to/directory是你希望作为用户根目录的路径。

  • 防火墙配置:如果有防火墙,请确保打开FTP所使用的端口,默认情况下FTP使用TCP端口21。

3. 启动vsftpd服务

完成配置后,启动vsftpd服务并设置为开机自启动:

1
2
3
sudo systemctl start vsftpds
sudo systemctl enable vsftpd

4. 配置防火墙

如果有防火墙,请确保打开FTP所使用的端口(默认为TCP 21):

1
2
3
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --reload

5. 测试FTP服务器

使用FTP客户端(如FileZilla)连接到你的FTP服务器,并尝试上传、下载文件,以确保一切正常。

  • Title: Linux FTP服务器
  • Author: Gweek
  • Created at : 2024-04-28 00:00:00
  • Updated at : 2024-09-13 14:08:11
  • Link: https://gweek.nyc.mn/2024/04/27/2024-04-28-ftp/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments