ftp服务与虚拟用户配置
简介
将某台计算机中的文件通过网络传送到可能相距很远的另一台计算机中,即文件传输, 是一项基本的网络应用。很多时候有这样的需求:网站设计者将构成网站内容的文件批量上传到他们的Web服务器,计算机之间批量传输文件等,而ftp协议可以很好地满足这种需求。
ftp(file transport protocol)文件传输协议,是TCP/IP协议组中的协议。ftp协议包含两个部分,1是服务器,2是客户端。其中ftp服务器用来存储文件,而客户端通过ftp协议访问ftp服务器上的资源。
默认情况下,ftp协议使用20和21端口,其中20用于传输数据,21用于传输控制信息。
ftp服务(Very Secure FTP Daemons, vsftpd)安装
yum下载
1
sudo yum install vsftpd
开启ftp服务
1
2
3
4
5
6# 查看ftp服务的状态
sudo systemctl status vsftpd # 此时是inactive(dead),同时发现CGroup行:
# ftp服务守护进程是/usr/sbin/vsftpd,
# 配置文件/etc/vsftpd/vsftpd.conf
sudo systemctl start vsftpd # 打开ftp服务
sudo systemctl enable vsftpd # 下次开机自己启动防火墙开通21端口
1
2
3
4#为ftp开通21号端口
sudo firewall-cmd --zone=public --permanent --add-port=21/tcp
sudo firewall-cmd --zone=public --permanent --add-service=ftp
sudo firewall-cmd --reload # 重启防火墙
ftp客户端安装
rhel8版本下,ftp客户端默认未安装,可在shell中进行安装
1 | $ ftp # 仅输入ftp |
通过以上步骤就能使用ftp服务了,但是这样默认使用本地用户,为了提高系统的安全性,避免直接暴露系统账户,可以采用建立ftp虚拟用户的方式,满足不同场景的需求。
虚拟用户配置
安装必要的软件
确保已经安装了 vsftpd
和 db_util
工具(用于管理虚拟用户数据库)。
1 | sudo yum install libdb-utils |
创建虚拟用户数据库
编辑一个文本文件,记录用户的用户名和密码。
1
2
3
4
5
6
7
8sudo vim /etc/vsftpd/virtual_users.txt
#增加以下内容
user1
password1
user2
password2
...转换为数据库格式
使用
db_load
工具将上述文件转换为 Berkeley DB 格式:1
sudo db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
确保数据库文件的权限:
1
sudo chmod 600 /etc/vsftpd/virtual_users.db
配置pam认证
修改PAM 配置文件(通常位于 /etc/pam.d/vsftpd
或 /etc/pam.d/ftp
):
1 | #备份 |
配置vsftpd
1 | #编辑vsftpd配置文件 |
创建虚拟用户的目录
创建一个根目录,并为虚拟用户设置独立的子目录:
1
2sudo mkdir -p /home/ftp/user1
sudo mkdir -p /home/ftp/user2修改目录权限,使
vsftpd
能够访问:1
2sudo chown ftp:ftp /home/ftp/user1
sudo chown ftp:ftp /home/ftp/user2
重启 vsftpd 服务
1 | sudo systemctl restart vsftpd |
附加配置(可选)
日志记录: 在 vsftpd.conf
中启用日志记录:
1 | xferlog_enable=YES |
参考