凌峰创科服务平台

Linux下FTP服务器怎么安装?

在Linux系统中安装FTP服务器是许多企业和个人用户的需求,主要用于文件传输、数据共享等场景,本文将以vsftpd(Very Secure FTP Daemon)为例,详细介绍在Linux环境下安装、配置和测试FTP服务器的完整过程,包括环境准备、安装步骤、配置优化、安全设置及常见问题排查等内容。

Linux下FTP服务器怎么安装?-图1
(图片来源网络,侵删)

环境准备

在开始安装前,需确保系统满足基本要求:推荐使用Ubuntu 20.04/22.04或CentOS 7/8等主流发行版,root权限或具有sudo权限的用户账户,以及稳定的网络连接,需确认系统是否已安装其他FTP服务(如proftpd),避免端口冲突,可通过以下命令检查:

sudo systemctl status vsftpd  # 检查vsftpd是否运行
sudo netstat -tuln | grep 21  # 检查FTP默认端口21是否被占用

安装vsftpd

基于Ubuntu/Debian系统

使用APT包管理器安装,执行以下命令:

sudo apt update
sudo apt install vsftpd -y

安装完成后,vsftpd服务会自动启动,可通过sudo systemctl status vsftpd确认。

基于CentOS/RHEL系统

使用YUM包管理器安装,执行以下命令:

Linux下FTP服务器怎么安装?-图2
(图片来源网络,侵删)
sudo yum install vsftpd -y
# 或对于CentOS 8+使用dnf
sudo dnf install vsftpd -y

安装后启动服务并设置开机自启:

sudo systemctl start vsftpd
sudo systemctl enable vsftpd

配置vsftpd

vsftpd的主配置文件位于/etc/vsftpd.conf,建议先备份原配置文件:

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

然后通过编辑器(如vim)修改配置,关键参数说明如下:

参数 默认值 推荐值 说明
anonymous_enable YES NO 是否允许匿名访问,建议关闭
local_enable YES YES 是否允许本地用户登录
write_enable NO YES 是否允许用户上传文件
chroot_local_user NO YES 是否限制用户在主目录
allow_writeable_chroot NO YES 允许chroot目录可写(需配合write_enable)
pasv_min_port 0 60000 被动模式最小端口
pasv_max_port 0 60100 被动模式最大端口
userlist_enable YES YES 启用用户列表控制
userlist_file /etc/vsftpd.user_list /etc/vsftpd.user_list 用户列表文件路径
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_min_port=60000
pasv_max_port=60100
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
seccomp_sandbox=NO

保存后重启vsftpd服务:

Linux下FTP服务器怎么安装?-图3
(图片来源网络,侵删)
sudo systemctl restart vsftpd

创建FTP用户并设置权限

创建系统用户

假设创建一个名为ftpuser的用户,并设置其主目录为/home/ftpuser

sudo useradd -m -d /home/ftpuser -s /sbin/nologin ftpuser
sudo passwd ftpuser  # 设置用户密码

参数说明:-m创建主目录,-s /sbin/nologin禁止用户SSH登录。

配置用户访问权限

编辑用户列表文件/etc/vsftpd.user_list,添加允许访问的用户:

sudo echo "ftpuser" | sudo tee -a /etc/vsftpd.user_list

若需禁止某些用户访问,可将其加入/etc/vsftpd/ftpusers文件。

设置目录权限

确保FTP用户对其主目录有写权限:

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

防火墙与SELinux配置

Ubuntu/Debian(UFW防火墙)

sudo ufw allow 21/tcp    # 允许FTP命令端口
sudo ufw allow 60000:60100/tcp  # 允许被动模式数据端口
sudo ufw reload

CentOS/RHEL(firewalld防火墙)

sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=60000-60100/tcp
sudo firewall-cmd --reload

SELinux配置(CentOS/RHEL)

若系统启用SELinux,需安装vsftpd_selinux包并设置上下文:

sudo yum install vsftpd_selinux -y
sudo semanage fcontext -a -t public_content_rw_t "/home/ftpuser(/.*)?"
sudo restorecon -Rv /home/ftpuser

测试FTP服务器

使用命令行测试

在本地或另一台机器上执行:

ftp [服务器IP]
# 输入用户名和密码后,使用put命令测试上传
ftp> put test.txt

使用FileZilla等图形工具

输入服务器IP、用户名、密码及端口(21),连接成功后即可进行文件传输。

常见问题与优化

  1. 连接超时:检查防火墙和被动模式端口是否开放。
  2. 用户无法登录:确认用户是否在vsftpd.user_list中,以及chroot目录权限是否正确。
  3. 上传失败:检查write_enableallow_writeable_chroot是否启用,目录权限是否为755。
  4. 匿名访问问题:确保anonymous_enable=NO,并删除/var/ftp目录下的匿名文件。

相关问答FAQs

问题1:如何限制FTP用户只能访问其主目录,不能切换到上级目录?
解答:通过设置chroot_local_user=YESallow_writeable_chroot=YES实现,确保用户主目录及其所有上级目录的权限设置正确(如主目录权限为755,所有者为root或ftpuser),若仍可切换,检查SELinux上下文是否为public_content_tpublic_content_rw_t

问题2:FTP上传速度慢,如何优化?
解答:可通过以下方式优化:

  1. 调整vsftpd.conf中的local_max_rate参数(如local_max_rate=1048576,单位为字节/秒)限制带宽;
  2. 关闭use_sendfile=YES,改用use_localtime=YES以减少网络延迟;
  3. 检查服务器网络带宽和磁盘I/O性能,必要时升级硬件;
  4. 使用被动模式(pasv_enable=YES)并指定端口范围,避免端口冲突。
分享:
扫描分享到社交APP
上一篇
下一篇