在Linux系统中搭建FTP服务器可以实现便捷的文件传输功能,vsftpd是目前使用最广泛的轻量FTP服务程序,稳定性和安全性表现优异,适合多数场景的部署需求。

安装vsftpd服务
不同Linux发行版的包管理工具不同,安装命令存在差异,以下是常见发行版的安装方式:
- Debian/Ubuntu系统:使用apt包管理器安装
- CentOS/RHEL系统:使用yum或dnf包管理器安装
- Arch Linux系统:使用pacman包管理器安装
以Ubuntu系统为例,安装命令如下:
# 更新软件源索引 sudo apt update # 安装vsftpd服务 sudo apt install vsftpd -y
安装完成后可以检查服务状态,确认是否安装成功:
# 查看vsftpd服务运行状态 systemctl status vsftpd
核心配置文件说明
vsftpd的默认配置文件路径为/etc/vsftpd.conf,大部分配置调整都需要修改这个文件。以下是常用配置项的含义:
| 配置项 | 默认值 | 说明 |
|---|---|---|
| anonymous_enable | YES | 是否允许匿名用户登录,生产环境建议设为NO |
| local_enable | NO | 是否允许本地系统用户登录 |
| write_enable | NO | 是否允许登录用户执行写操作,如上传、删除文件 |
| chroot_local_user | NO | 是否将用户限制在其家目录内,避免访问系统其他路径 |
| listen | YES | 是否以独立模式运行服务 |
基础配置步骤
1. 备份原始配置文件
修改配置前先备份原始文件,避免配置错误后无法恢复:
# 备份配置文件 sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
2. 修改配置文件
使用文本编辑器打开配置文件,调整以下基础配置:
# 编辑配置文件 sudo vim /etc/vsftpd.conf
在文件中找到对应配置项,修改为如下内容:
# 禁止匿名登录 anonymous_enable=NO # 允许本地用户登录 local_enable=YES # 允许写操作 write_enable=YES # 限制用户在家目录 chroot_local_user=YES # 允许对家目录有写权限 allow_writeable_chroot=YES # 监听IPv4地址 listen=YES # 关闭IPv6监听 listen_ipv6=NO
3. 重启服务生效配置
修改完成后保存文件,重启vsftpd服务让配置生效:
# 重启vsftpd服务 sudo systemctl restart vsftpd # 设置服务开机自启 sudo systemctl enable vsftpd
用户权限配置
如果需要为特定用户开放FTP访问权限,可以创建专用的系统用户,避免使用root用户直接登录:
# 创建ftp用户,设置家目录为/var/ftp/pub sudo useradd -d /var/ftp/pub -s /sbin/nologin ftpuser # 设置用户密码 sudo passwd ftpuser # 修改家目录权限,确保用户可以读写 sudo chmod 755 /var/ftp/pub sudo chown ftpuser:ftpuser /var/ftp/pub
如果需要限制部分用户不能访问FTP,可以配置用户列表:
# 编辑用户限制列表,添加不允许登录的用户名,每行一个 sudo vim /etc/vsftpd.user_list # 在配置文件中开启用户列表限制 sudo vim /etc/vsftpd.conf # 添加以下配置 userlist_enable=YES userlist_deny=YES userlist_file=/etc/vsftpd.user_list
防火墙与端口配置
FTP服务默认使用21端口作为命令端口,被动模式还会使用随机高位端口,需要开放对应端口:
使用ufw防火墙(Ubuntu常见)
# 开放21端口 sudo ufw allow 21/tcp # 开放被动模式端口范围,假设设置为30000-31000 sudo ufw allow 30000:31000/tcp # 重新加载防火墙规则 sudo ufw reload
使用firewalld防火墙(CentOS常见)
# 开放21端口 sudo firewall-cmd --permanent --add-port=21/tcp # 开放被动模式端口范围 sudo firewall-cmd --permanent --add-port=30000-31000/tcp # 重新加载规则 sudo firewall-cmd --reload
同时需要在vsftpd配置文件中指定被动模式端口范围:
# 在/etc/vsftpd.conf中添加 pasv_min_port=30000 pasv_max_port=31000
连接测试
配置完成后可以使用FTP客户端工具测试连接,以下是命令行测试方式:
# 使用ftp命令连接,替换为服务器IP ftp 192.168.0.1 # 输入之前创建的用户名ftpuser和密码 # 登录成功后可以使用ls查看目录,put上传文件,get下载文件
如果连接失败,可以查看vsftpd的日志文件排查问题,默认日志路径为/var/log/vsftpd.log。