搭建FTP服务器是Linux系统中常见的需求,以下是几种常见的搭建方法:
vsftpd (Very Secure FTP Daemon) 是一个安全、快速的FTP服务器。
# Ubuntu/Debian
sudo apt update
sudo apt install vsftpd
# CentOS/RHEL
sudo yum install vsftpd
编辑配置文件:
sudo nano /etc/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 # 使用标准FTP端口
chroot_local_user=YES # 将用户限制在其主目录
allow_writeable_chroot=YES # 允许被限制用户写入
pasv_enable=YES # 启用被动模式
pasv_min_port=40000 # 被动模式最小端口
pasv_max_port=50000 # 被动模式最大端口
sudo systemctl start vsftpd
sudo systemctl enable vsftpd
sudo useradd -m ftpuser
sudo passwd ftpuser
ProFTPD是另一个流行的FTP服务器。
# Ubuntu/Debian
sudo apt install proftpd
# CentOS/RHEL
sudo yum install proftpd
编辑 /etc/proftpd/proftpd.conf
,基本配置类似于vsftpd。
pure-ftpd是一个简单、安全的FTP服务器。
# Ubuntu/Debian
sudo apt install pure-ftpd
# CentOS/RHEL
sudo yum install pure-ftpd
如果使用防火墙,需要开放FTP端口:
# 开放21端口和被动模式端口范围
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp
可以使用FTP客户端如FileZilla或命令行工具测试:
ftp your_server_ip
如果安全性是首要考虑,建议使用SFTP(基于SSH的文件传输):
# 确保SSH服务器已安装
sudo apt install openssh-server
# 创建SFTP专用用户组
sudo groupadd sftpusers
# 创建SFTP用户(限制只能使用SFTP)
sudo useradd -G sftpusers -s /bin/false sftpuser
sudo passwd sftpuser
# 配置SSH
sudo nano /etc/ssh/sshd_config
添加以下内容:
Match Group sftpusers
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
重启SSH服务:
sudo systemctl restart sshd
这样用户就可以通过SFTP客户端连接,但无法获得shell访问权限。