FTP 服务器配置与验证完整步骤
以下内容是针对在 192.168.6.101
配置 FTP 服务器,端口为 59999
的完整详细操作步骤,包括配置与验证。每个步骤都附有详细注释。
配置 FTP 服务器
1. 安装 vsftpd
根据系统类型,执行以下命令安装 FTP 服务:
bash
sudo yum install vsftpd -y # RHEL/CentOS 系列
sudo apt install vsftpd -y # Debian/Ubuntu 系列
注: 如果已安装可跳过此步骤。
2. 创建 FTP 目录与用户
-
创建存放 FTP 文件的目录:
bashsudo mkdir -p /ZG_data/shareddata/ftpdata # 创建目录 sudo chmod 755 /ZG_data/shareddata/ftpdata # 设置目录权限
注: 目录权限为 755,确保用户可正常访问。
-
创建 FTP 用户:
bashsudo useradd ftpzg -d /ZG_data/shareddata/ftpdata -s /sbin/nologin echo "XXXXXXX" | sudo passwd ftpzg --stdin
- 用户名为
ftpzg
。 - 主目录为
/ZG_data/shareddata/ftpdata
。 - 禁用 Shell 登录功能,提升安全性。
- 用户名为
3. 编辑配置文件
编辑 /etc/vsftpd/vsftpd.conf
文件:
bash
sudo vi /etc/vsftpd/vsftpd.conf
将以下内容写入或替换原配置文件:
conf
# 禁止匿名用户登录,确保安全
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 启用写权限,允许上传文件
write_enable=YES
# 设置本地用户的权限掩码为 002(775 权限)
local_umask=002
# 显示进入目录的欢迎信息
dirmessage_enable=YES
# 启用上传/下载日志
xferlog_enable=YES
# 禁止使用端口 20 进行主动模式传输
connect_from_port_20=NO
# 使用标准 xferlog 日志格式
xferlog_std_format=YES
# 设置会话超时时间为 600 秒
idle_session_timeout=600
# 启用用户目录隔离
chroot_list_enable=YES
# 指定目录隔离列表文件路径
chroot_list_file=/etc/vsftpd/chroot_list
# 监听 IPv6,禁用 IPv4
listen=NO
listen_ipv6=YES
# PAM 认证模块
pam_service_name=vsftpd
# 启用用户列表功能
userlist_enable=YES
userlist_deny=NO # 用户列表为允许模式
# 设置最大客户端连接数和每 IP 的最大连接数
max_clients=1000
max_per_ip=50
# 设置本地用户的根目录
local_root=/ZG_data/shareddata/ftpdata
# 允许用户在 chroot 环境中具有写权限
allow_writeable_chroot=YES
# 设置 FTP 服务器监听端口
listen_port=59999
# 启用被动模式,指定端口范围
pasv_enable=YES
pasv_min_port=60001
pasv_max_port=60999
pasv_promiscuous=YES # 允许连接服务器之外的 IP
4. 配置用户访问权限
-
添加用户到允许列表:
bashecho "ftpzg" | sudo tee -a /etc/vsftpd/user_list
-
配置用户目录隔离:
-
创建
chroot_list
文件:bashsudo touch /etc/vsftpd/chroot_list
-
添加用户到隔离列表:
bashecho "ftpzg" | sudo tee -a /etc/vsftpd/chroot_list
-
-
检查 PAM 配置文件 :
打开
/etc/pam.d/vsftpd
文件:bashsudo vi /etc/pam.d/vsftpd
注释掉以下行(如果存在):
conf# auth required pam_shells.so
注: 这会避免因用户的
/sbin/nologin
被拒绝登录 FTP。
5. 启动 vsftpd 服务
-
启动服务并设置开机自启:
bashsudo systemctl restart vsftpd sudo systemctl enable vsftpd
-
检查服务状态:
bashsudo systemctl status vsftpd
应显示
active (running)
状态。
验证 FTP 服务
1. 检查服务监听
确保服务监听在正确的端口:
bash
ss -tuln | grep 59999
应显示类似以下内容:
tcp LISTEN 0 128 :::59999 :::*
2. 本地登录测试
使用命令行测试 FTP 服务:
bash
ftp 127.0.0.1 59999
输入用户名和密码:
Name (127.0.0.1:root): ftpzg
Password: XXXXXXXXX
验证登录后可执行以下操作:
-
上传文件 :
bashput aaa.txt
-
下载文件 :
bashget aaa.txt
3. 远程登录测试
在另一台主机上测试:
bash
ftp 192.168.6.101 59999
输入用户名 ftpzg
和密码 Hrbzg@0701
,验证是否能登录并进行文件操作(上传、下载)。
4. 验证用户目录隔离
登录后尝试访问非用户目录:
bash
cd /etc
应显示"权限被拒绝",验证用户仅可访问 /ZG_data/shareddata/ftpdata
。
5. 检查日志文件
如遇问题,可查看以下日志文件进行排查:
-
vsftpd 日志 :
bashsudo cat /var/log/vsftpd.log
-
系统日志 :
bashsudo journalctl -u vsftpd
注意事项
- 防火墙与 SELinux:已确认防火墙和 SELinux 均关闭,无需额外配置。
- 端口验证:确保 59999 和被动模式端口范围(60001-60999)开放,便于连接。
通过上述步骤,FTP 服务器应能正常运行并支持用户登录、上传下载及目录隔离功能。