在Linux系统中配置FTP服务通常使用vsftpd(Very Secure FTP Daemon),这是一款轻量级、安全且稳定的FTP服务器软件,以下是详细的配置步骤,涵盖安装、配置用户权限、防火墙设置及服务管理等内容。
安装vsftpd
首先根据Linux发行版选择合适的包管理器安装vsftpd。
- 基于Debian/Ubuntu的系统:
sudo apt update sudo apt install vsftpd -y
- 基于CentOS/RHEL的系统:
sudo yum install vsftpd -y # CentOS 7及以下 sudo dnf install vsftpd -y # CentOS 8及以上
安装完成后,vsftpd服务默认未启动,需通过
systemctl status vsftpd
检查状态。
配置vsftpd核心文件
vsftpd的主配置文件位于/etc/vsftpd/vsftpd.conf
,建议先备份原文件:
sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
然后编辑配置文件,以下为关键配置项及其作用(可通过表格清晰对比):
配置项 | 作用 | 推荐值 |
---|---|---|
anonymous_enable |
是否允许匿名用户登录 | NO (禁止匿名访问) |
local_enable |
是否允许本地用户登录 | YES (允许系统用户登录) |
write_enable |
是否允许FTP命令修改文件 | YES (允许上传/删除等操作) |
chroot_local_user |
是否限制用户仅能访问自家目录 | YES (增强安全性) |
allow_writeable_chroot |
当chroot_local_user=YES 时,是否允许家目录可写 |
YES (需配合目录权限) |
pasv_enable |
是否启用被动模式(推荐用于客户端防火墙环境) | YES |
pasv_min_port / pasv_max_port |
被动模式端口范围 | 10000 10100 (需防火墙放行) |
userlist_enable |
是否启用用户列表文件 | YES |
userlist_file |
用户列表文件路径 | /etc/vsftpd/user_list |
tcp_wrappers |
是否使用TCP Wrappers访问控制 | YES (可通过hosts.allow/deny限制IP) |
编辑配置文件时,可通过sudo nano /etc/vsftpd/vsftpd.conf
打开,取消或修改上述配置项的值,保存后退出。
配置FTP用户
为安全起见,建议创建专用FTP用户,而非直接使用系统用户。
-
创建用户并设置密码:
sudo useradd -m -s /sbin/nologin ftpuser # 创建用户,禁止SSH登录 sudo passwd ftpuser # 设置用户密码
-m
表示自动创建家目录,-s /sbin/nologin
限制用户只能通过FTP登录。 -
限制用户访问目录(chroot):
若chroot_local_user=YES
,需确保用户家目录不可被写入(避免安全漏洞),或设置allow_writeable_chroot=YES
后调整目录权限:sudo chmod 755 /home/ftpuser # 设置家目录权限为755(所有者可读写执行,其他用户可读执行)
-
通过用户列表限制登录:
若userlist_enable=YES
,编辑/etc/vsftpd/user_list
文件,添加允许登录的用户名(每行一个):echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list
配置防火墙
FTP服务默认使用21端口(控制连接),被动模式需额外配置端口范围(如10000-10100)。
- Ubuntu/Debian(使用ufw):
sudo ufw allow 21/tcp # 允许FTP控制端口 sudo ufw allow 10000:10100/tcp # 允许被动模式端口范围 sudo ufw reload
- CentOS/RHEL(使用firewalld):
sudo firewall-cmd --permanent --add-service=ftp # 添加FTP服务(自动包含21端口) sudo firewall-cmd --permanent --add-port=10000-10100/tcp sudo firewall-cmd --reload
启动并设置开机自启
配置完成后,启动vsftpd服务并设置为开机自启:
sudo systemctl start vsftpd sudo systemctl enable vsftpd
通过systemctl status vsftpd
确认服务运行状态,若启动失败,可查看日志journalctl -u vsftpd
排查问题。
测试FTP连接
-
命令行测试(本地或远程客户端):
ftp 127.0.0.1 # 或服务器IP
输入用户名(ftpuser)和密码,登录后使用
put
上传文件、get
下载文件测试。 -
图形化工具测试(如FileZilla):
主机填服务器IP,协议选择“FTP”,端口21,输入用户名密码,连接成功后即可传输文件。
相关问答FAQs
Q1:FTP连接时提示“530 Login incorrect”,如何解决?
A:可能原因包括:① 用户名或密码错误;② 用户未在user_list文件中;③ chroot限制导致家目录权限问题,检查/etc/vsftpd/user_list
是否包含用户名,确认家目录权限为755,或尝试临时关闭chroot_local_user
测试。
Q2:如何限制FTP用户只能上传文件,不能下载或删除?
A:通过设置文件权限实现,在用户家目录中,创建专用上传目录,并调整权限:
sudo mkdir /home/ftpuser/upload sudo chown ftpuser:ftpuser /home/ftpuser/upload sudo chmod 733 /home/ftpuser/upload # 用户可读写执行,其他用户无权限(避免下载)
然后在vsftpd配置文件中添加local_root=/home/ftpuser/upload
,将用户默认目录限制为upload,即可实现仅上传功能。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/33022.html