#!/bin/bash
# 定义变量
VUSERS_FILE="/etc/vsftpd/vusers.txt"
VUSERS_DB="/etc/vsftpd/vusers.db"
PAM_CONFIG="/etc/pam.d/vsftpd.vu"
VSFTPD_CONFIG="/etc/vsftpd/vsftpd.conf"
FTP_USER="ftpuser"
FTP_HOME="/var/ftp"
# 步骤 1: 安装必要软件
yum install vsftpd db4-utils -y
# 步骤 2: 创建虚拟用户文本文件
cat << EOF > $VUSERS_FILE
user1
password1
user2
password2
EOF
# 步骤 3: 生成虚拟用户数据库
db_load -T -t hash -f $VUSERS_FILE $VUSERS_DB
chmod 600 $VUSERS_FILE $VUSERS_DB
# 步骤 4: 创建PAM认证文件
cat << EOF > $PAM_CONFIG
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
EOF
# 步骤 5: 配置 vsftpd
# 备份原配置文件
cp $VSFTPD_CONFIG ${VSFTPD_CONFIG}.bak
cat << EOF > $VSFTPD_CONFIG
# 禁止匿名用户登录
anonymous_enable=NO
# 允许本地用户登录
local_enable=YES
# 允许上传文件
write_enable=YES
# 本地用户创建文件的默认权限
local_umask=022
# 启用虚拟用户
guest_enable=YES
# 指定虚拟用户映射的系统用户
guest_username=$FTP_USER
# 使用自定义的PAM认证文件
pam_service_name=vsftpd.vu
# 限制用户只能访问自己的主目录
chroot_local_user=YES
allow_writeable_chroot=YES
EOF
# 步骤 6: 创建映射的系统用户
useradd -d $FTP_HOME -s /sbin/nologin $FTP_USER
chmod 555 $FTP_HOME
# 步骤 7: 为虚拟用户创建独立的主目录
mkdir -p $FTP_HOME/user1
chown $FTP_USER:$FTP_USER $FTP_HOME/user1
# 步骤 8: 启动并设置开机自启
systemctl start vsftpd
systemctl enable vsftpd
# 步骤 9: 防火墙设置
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --reload
echo "基于虚拟用户的 FTP 服务已成功搭建!"
Linux中虚拟用户FTP服务安装
于 2025-03-25 09:40:14 首次发布