脚本说明
test
用户有正确的 home 目录/var/ftp/test
可以上传、写入记录
chroot 安全限制在 home 目录
防火墙 21 端口已开放
要是用户已存在,会自动更新 home 和 shell
你运行这个脚本后,直接用 FileZilla 或 ftp 服务器IP
登录 test/test123
就可以上传文件了。
#!/bin/bash
# CentOS 7 一键安装 vsftpd 并创建可登录 FTP 用户 test
set -e
# 1. 检查 root 用户
if [ "$(id -u)" != "0" ]; then
echo "错误:请使用 root 用户执行此脚本!" >&2
exit 1
fi
echo "[*] 安装 vsftpd..."
yum install -y vsftpd
# 2. 启动服务并设置开机自启
systemctl enable vsftpd
systemctl start vsftpd
# 3. 创建 FTP 目录
FTP_DIR="/var/ftp/test"
mkdir -p "$FTP_DIR"
# 4. 创建本地用户 test
if ! id test &>/dev/null; then
echo "[*] 创建本地用户 test..."
useradd -d "$FTP_DIR" -s /bin/bash test
echo "test123" | passwd --stdin test
else
echo "[*] 用户 test 已存在,更新 home 和 shell..."
usermod -d "$FTP_DIR" -s /bin/bash test
echo "test123" | passwd --stdin test
fi
# 5. 设置目录权限
chown -R test:test "$FTP_DIR"
chmod 755 "$FTP_DIR"
# 6. 配置 vsftpd
echo "[*] 配置 vsftpd..."
cat > /etc/vsftpd/vsftpd.conf /etc/vsftpd/user_list
# 8. 配置防火墙
echo "[*] 配置防火墙..."
firewall-cmd --permanent --add-port=21/tcp
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
# 9. 重启 vsftpd
systemctl restart vsftpd
echo "[✔] FTP 安装完成!"
echo "用户名: test"
echo "密码: test123"
echo "FTP 目录: $FTP_DIR"