FTP服务器安装与配置

FTP服务器配置与管理

步骤一: 配置FTP服务器基础环境

1. 配置网络

确保服务器网络配置正确,能够与客户端正常通信。

2. 安装vsftpd软件

首先需要配置本地yum源,然后安装vsftpd:

1
yum install vsftpd -y

3. 修改vsftpd配置文件

为了便于管理,先备份原始配置文件,然后过滤掉注释行生成简洁的配置文件:

1
2
3
4
5
6
# 创建配置文件备份
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak

# 过滤注释行,生成新的配置文件
# -v 表示反选,排除包含 # 的注释行
grep -v "#" /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf

4. 启动vsftpd服务

1
2
systemctl start vsftpd
systemctl enable vsftpd # 设置开机自启

步骤二: 配置匿名用户FTP访问

匿名FTP允许用户无需认证即可访问服务器,适用于公开文件共享场景。

1. 服务器端测试

首先在服务器本地安装FTP客户端工具并测试:

1
2
3
4
5
# 安装ftp客户端
yum install ftp -y

# 本地测试连接
ftp localhost

连接成功后会看到以下提示信息:

1
2
3
4
5
6
7
Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:root): anonymous
331 Please specify the password.
Password: (直接按回车)
230 Login successful.
ftp> ls

匿名用户登录成功

测试结果: 匿名用户能够成功登录FTP服务器。

2. 客户端测试

在客户机端进行同样的操作:

1
2
3
4
5
# 安装ftp客户端
yum install ftp -y

# 连接服务器(替换为实际服务器IP)
ftp 192.241.42.3

使用anonymous用户登录,密码直接回车即可。

客户端匿名登录


步骤三: 配置本地用户模式的FTP服务器

本地用户模式允许Linux系统用户通过FTP访问服务器,安全性更高。

1. 创建FTP专用账号

1
2
3
4
5
6
7
8
# 创建用户ftpuser,指定家目录和shell
sudo useradd -m -s /bin/bash ftpuser

# 设置用户密码
passwd ftpuser

# 设置家目录权限
chmod 755 /home/ftpuser

2. 配置vsftpd.conf主配置文件

编辑配置文件以启用本地用户登录:

1
vi /etc/vsftpd/vsftpd.conf

确保以下配置项正确设置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
anonymous_enable=YES          # 允许匿名访问
local_enable=YES # 允许本地用户登录
write_enable=YES # 允许写操作
local_umask=022 # 本地用户上传文件的umask值
dirmessage_enable=YES # 启用目录消息
xferlog_enable=YES # 启用传输日志
connect_from_port_20=YES # 使用20端口进行数据传输
xferlog_std_format=YES # 使用标准日志格式
listen=NO # 不使用独立模式
listen_ipv6=YES # 监听IPv6
pam_service_name=vsftpd # PAM服务名称
userlist_enable=YES # 启用用户列表
tcp_wrappers=YES # 启用TCP Wrappers
chroot_local_user=YES # 限制用户在家目录
allow_writeable_chroot=YES # 允许可写的chroot目录

配置文件内容

3. 添加用户到chroot列表

手动创建chroot_list文件,将创建的FTP用户添加进去:

1
vi /etc/vsftpd/chroot_list

在文件中添加用户名:

1
ftpuser

chroot列表配置

4. 客户端测试

在客户机上使用创建的本地用户登录:

1
2
3
4
5
6
# 连接服务器
ftp 192.241.42.3

# 输入用户名和密码
Name: ftpuser
Password: ******

本地用户登录测试

测试结果: 本地用户能够正常登录并执行文件操作,一切功能运行正常。


步骤四: 配置虚拟用户FTP访问

虚拟用户是一种更安全的认证方式,不依赖系统用户账号,所有虚拟用户映射到同一个系统用户。

1. 建立虚拟用户口令库文件

创建一个文本文件,奇数行为用户名,偶数行为密码:

1
vim /etc/vsftpd/login.txt

添加虚拟用户信息(一行用户名,一行密码):

1
2
virtualuser
yourpassword

虚拟用户口令文件

2. 生成vsftpd的认证文件

使用db_load命令将文本文件转换为数据库格式:

1
db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

3. 设置认证文件权限

1
chmod 700 /etc/vsftpd/login.db

4. 配置PAM认证文件

编辑PAM配置文件以使用虚拟用户认证:

1
vim /etc/pam.d/vsftpd

原始内容:

1
2
3
4
5
6
7
8
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth

修改后的内容(注释掉原有内容,添加以下两行):

1
2
auth       sufficient   pam_userdb.so    db=/etc/vsftpd/login
account sufficient pam_userdb.so db=/etc/vsftpd/login

注意: db= 后面的路径不要加 .db 后缀。

PAM配置文件

5. 创建虚拟用户映射的系统用户

建立一个系统用户作为所有虚拟用户的映射账号:

1
2
3
4
5
# 创建系统用户,不允许登录shell
useradd virtualuser -d /home/virtualuser -s /sbin/nologin

# 设置家目录权限
chmod 755 /home/virtualuser

注意: 不需要为该系统用户设置密码,它仅用于映射。

6. 修改vsftpd.conf配置文件

在配置文件中添加虚拟用户相关配置:

1
vim /etc/vsftpd/vsftpd.conf

添加以下配置项:

1
2
3
4
guest_enable=YES                    # 启用虚拟用户
guest_username=virtualuser # 指定虚拟用户映射的系统用户
allow_writeable_chroot=YES # 允许可写的chroot目录
virtual_use_local_privs=YES # 虚拟用户使用本地用户权限

虚拟用户配置

7. 重启服务并测试

1
2
3
4
5
# 重启vsftpd服务
systemctl restart vsftpd

# 在客户机上测试
ftp 192.241.42.3

使用虚拟用户virtualuser登录:

1
2
Name: virtualuser
Password: yourpassword

虚拟用户登录测试

测试结果: 虚拟用户能够成功登录并进行文件操作。