凌峰创科服务平台

Linux安装FTP服务器步骤是怎样的?

下面我将详细介绍如何使用 vsftpd 来搭建一个 FTP 服务器,并提供详细的配置和排错指南。

Linux安装FTP服务器步骤是怎样的?-图1
(图片来源网络,侵删)

第一步:选择并安装 FTP 服务器软件

我们以最流行的 vsftpd 为例。

更新软件包列表

在安装任何新软件之前,这是一个好习惯。

sudo apt update  # 对于 Debian/Ubuntu 系统

或者

sudo yum check-update  # 对于 CentOS/RHEL 系统

安装 vsftpd

对于 Debian / Ubuntu 系统:

Linux安装FTP服务器步骤是怎样的?-图2
(图片来源网络,侵删)
sudo apt install vsftpd

对于 CentOS / RHEL / Fedora 系统:

sudo yum install vsftpd

安装完成后,vsftpd 服务通常会自动启动,你可以检查其状态:

# 对于使用 systemd 的新系统 (Ubuntu 16.04+, CentOS 7+)
sudo systemctl status vsftpd
# 对于旧系统 (可能使用 SysVinit)
sudo service vsftpd status

第二步:配置 FTP 服务器

vsftpd 的主配置文件是 /etc/vsftpd.conf,我们需要编辑这个文件来满足我们的需求。

备份原始配置文件

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

编辑配置文件

使用你喜欢的文本编辑器,nanovim

Linux安装FTP服务器步骤是怎样的?-图3
(图片来源网络,侵删)
sudo nano /etc/vsftpd.conf

关键配置项说明

打开文件后,找到并修改或取消注释(去掉行首的 )以下选项:

基础设置:

  • anonymous_enable=NO:禁止匿名用户登录。(安全建议,必须设置为 NO)
  • local_enable=YES:允许本地系统用户登录。
  • write_enable=YES:允许本地用户有写权限(上传、创建目录等)。

用户权限限制(非常重要):

  • chroot_local_user=YES:将所有本地用户限制在其主目录中。(这是关键的安全设置,防止用户访问系统其他目录)
  • allow_writeable_chroot=YES:允许被限制在主目录的用户进行写操作。(在较新的 vsftpd 版本中,如果启用了 chroot,通常需要开启此选项,否则用户可能无法登录)

安全加固:

  • pasv_min_port=30000pasv_max_port=31000:设置被动模式(Passive Mode)使用的端口范围,这有助于配置防火墙规则。
  • userlist_enable=YES:启用用户列表功能。
  • userlist_file=/etc/vsftpd.user_list:指定用户列表文件。
  • userlist_deny=NO:只允许 /etc/vsftpd.user_list 文件中列出的用户登录。(比白名单更安全)

示例配置文件内容: 你可以将以下内容复制到你的 /etc/vsftpd.conf 文件中,这是一个相对安全和通用的配置。

# 示例 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
# 用户限制
chroot_local_user=YES
allow_writeable_chroot=YES
# 安全和访问控制
user_sub_token=$USER
local_root=/home/$USER
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

配置解释:

  • local_root=/home/$USER:指定每个用户登录后的根目录为他们的主目录,这是 chroot 的一个很好的补充。
  • listen=NOlisten_ipv6=YES:让 vsftpd 同时监听 IPv4 和 IPv6,并让系统通过 systemdxinetd 来管理服务,这是现代 Linux 系统的推荐做法。

第三步:创建 FTP 用户并设置权限

创建系统用户

假设我们要创建一个名为 ftpuser 的用户,并为其设置密码。

sudo adduser ftpuser

系统会提示你输入该用户的密码和一些基本信息。

将用户添加到允许登录列表

因为我们配置了 userlist_deny=NO,所以用户必须存在于 /etc/vsftpd.user_list 文件中才能登录。

打开该文件并添加你的用户名:

sudo nano /etc/vsftpd.user_list

在文件末尾添加一行:

ftpuser

保存并退出。

(可选) 设置用户主目录权限

为了确保 chroot 和文件上传正常工作,建议将用户主目录的所有者设置为该用户,并设置正确的权限。

sudo chown ftpuser:ftpuser /home/ftpuser
sudo chmod 755 /home/ftpuser

第四步:配置防火墙和 SELinux

这是最容易被忽略但又至关重要的一步,否则用户将无法连接。

防火墙配置

对于使用 UFW 的系统 (如 Ubuntu):

# 允许 FTP 服务 (它会自动处理 21 和被动模式的端口)
sudo ufw allow ftp
# 或者手动开放端口
sudo ufw allow 21/tcp
sudo ufw allow 30000:31000/tcp # 开放我们设置的被动模式端口范围

对于使用 firewalld 的系统 (如 CentOS 7+):

# 添加永久的服务规则
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
# 重新加载防火墙使配置生效
sudo firewall-cmd --reload

SELinux 配置 (仅限 CentOS/RHEL)

如果你的系统启用了 SELinux,它可能会阻止 FTP 服务,你需要设置正确的 SELinux 布尔值。

# 允许 FTP 在 home 目录中写入和读取
sudo setsebool -P ftpd_full_access on

注意-P 选项会使这个设置永久生效,重启后仍然有效。


第五步:重启 vsftpd 服务并测试

重启服务

sudo systemctl restart vsftpd

确保服务设置为开机自启:

sudo systemctl enable vsftpd

测试连接

你可以使用以下几种方式进行测试:

  1. 使用命令行 ftp 客户端:

    ftp localhost

    输入用户名 ftpuser 和密码,如果能成功登录并看到 ftp> 提示符,说明服务器工作正常,可以尝试上传或下载文件来测试读写权限。

  2. 使用图形化 FTP 客户端:

    • FileZilla: 这是最流行的 FTP 客户端之一。
    • 主机: 你的服务器 IP 地址 (168.1.100)
    • 协议: FTP - 快速传输
    • 加密: 如果你的服务器配置了 SSL/TLS,可以选择 "要求显式 FTP over TLS",否则,选择 "不加密"。
    • 用户名: ftpuser
    • 密码: 你设置的密码
  3. 使用 Web 浏览器: 在浏览器地址栏输入 ftp://ftpuser@你的服务器IP,然后输入密码。


常见问题与排错

如果连接失败,请按以下步骤排查:

  1. 检查服务状态:

    sudo systemctl status vsftpd

    确保服务是 active (running) 状态。

  2. 检查防火墙和端口:

    • 确认防火墙已经开放了 21 (控制端口) 和 30000-31000 (被动模式数据端口)。
    • 可以使用 netstatss 命令检查端口是否在监听:
      sudo ss -tulnp | grep vsftpd
  3. 检查日志文件:

    • /var/log/vsftpd.log:这是 vsftpd 的主要日志文件,里面会记录连接尝试、登录成功/失败、文件传输等信息,仔细查看日志是排错的关键。
  4. 检查 SELinux (仅限 CentOS/RHEL):

    • 如果怀疑是 SELinux 导致的问题,可以临时将其设置为 Permissive 模式(只记录警告,不阻止操作)来测试:
      sudo setenforce 0

      如果此时可以连接,那么问题肯定是 SELinux 引起的,请确保执行了正确的 setsebool 命令。

  5. 检查用户权限和目录:

    • 确认用户 ftpuser/etc/vsftpd.user_list 文件中。
    • 确认用户主目录 /home/ftpuser 的权限是 755
    • 确认用户对该目录有写入权限(如果需要上传功能)。

通过以上步骤,你应该就能成功在 Linux 系统上搭建一个功能完善且相对安全的 FTP 服务器了。

分享:
扫描分享到社交APP
上一篇
下一篇