Files
justice/www/html/Game/public/trycss/game-justic2/server/ftp-fix-all-530.sh
T
2026-05-27 04:30:21 +00:00

73 lines
3.6 KiB
Bash

#!/bin/bash
# แก้ FTP 530 Login incorrect ให้หมด — รันบนเซิร์ฟเวอร์: sudo bash ftp-fix-all-530.sh
# หลังรันแล้วต้องตั้งรหัสผ่านอีกครั้ง: sudo passwd ftpweb
set -e
FTP_USER="ftpweb"
HOME_DIR="/var/www/html"
SHELL_NOLOGIN="/usr/sbin/nologin"
echo "=== 1. ใส่ shell ใน /etc/shells (ต้องมีถึง vsftpd ถึงให้ login) ==="
if ! grep -Fxq "$SHELL_NOLOGIN" /etc/shells 2>/dev/null; then
echo "$SHELL_NOLOGIN" >> /etc/shells
echo "เพิ่ม $SHELL_NOLOGIN ใน /etc/shells แล้ว"
else
echo "มีอยู่แล้ว"
fi
echo ""
echo "=== 2. สร้าง user ถ้าไม่มี หรือแก้ shell + home ==="
if id "$FTP_USER" &>/dev/null; then
usermod -d "$HOME_DIR" -s "$SHELL_NOLOGIN" "$FTP_USER" 2>/dev/null || true
echo "มี user $FTP_USER แล้ว — แก้ shell/home แล้ว"
else
useradd -m -d "$HOME_DIR" -s "$SHELL_NOLOGIN" "$FTP_USER"
echo "สร้าง user $FTP_USER แล้ว"
fi
echo ""
echo "=== 3. vsftpd: ถ้าใช้ userlist อนุญาตเฉพาะรายการ — ใส่ ftpweb ในรายการที่อนุญาต ==="
for conf in /etc/vsftpd.conf /etc/vsftpd/vsftpd.conf; do
[ ! -f "$conf" ] && continue
UL_ENABLE=$(grep -E "^userlist_enable\s*=\s*YES" "$conf" 2>/dev/null || true)
UL_DENY=$(grep -E "^userlist_deny\s*=\s*NO" "$conf" 2>/dev/null || true)
if [ -n "$UL_ENABLE" ] && [ -n "$UL_DENY" ]; then
UL_FILE=$(grep -E "^userlist_file" "$conf" 2>/dev/null | head -1 | sed 's/.*=\s*//')
UL_FILE=${UL_FILE:-/etc/vsftpd.userlist}
[ -f /etc/vsftpd/user_list ] && UL_FILE=/etc/vsftpd/user_list
if [ -n "$UL_FILE" ] && [ -f "$UL_FILE" ]; then
grep -qx "$FTP_USER" "$UL_FILE" || echo "$FTP_USER" >> "$UL_FILE"
echo "ใส่ $FTP_USER ใน $UL_FILE แล้ว"
fi
fi
# ถ้า userlist_deny=YES = ไม่อนุญาตคนในรายการ — เอา ftpweb ออกจากรายการ
UL_DENY_YES=$(grep -E "^userlist_deny\s*=\s*YES" "$conf" 2>/dev/null || true)
if [ -n "$UL_DENY_YES" ]; then
UL_FILE=$(grep -E "^userlist_file" "$conf" 2>/dev/null | head -1 | sed 's/.*=\s*//')
UL_FILE=${UL_FILE:-/etc/vsftpd.user_list}
[ -f /etc/vsftpd/user_list ] && UL_FILE=/etc/vsftpd/user_list
if [ -f "$UL_FILE" ] && grep -q "^${FTP_USER}$" "$UL_FILE" 2>/dev/null; then
sed -i "/^${FTP_USER}$/d" "$UL_FILE"
echo "เอา $FTP_USER ออกจากรายการ deny ($UL_FILE) แล้ว"
fi
fi
done
echo ""
echo "=== 4. สิทธิ์โฟลเดอร์ home (ให้ ftpweb เข้าถึงได้) ==="
chown -R "$FTP_USER:$FTP_USER" "$HOME_DIR" 2>/dev/null || true
# หรือถ้าเว็บรันด้วย www-data ให้แค่ execute ขึ้นไปได้
chmod 755 "$HOME_DIR" 2>/dev/null || true
echo ""
echo "=== 5. รีสตาร์ท vsftpd ==="
systemctl restart vsftpd 2>/dev/null || systemctl restart vsftpd.service 2>/dev/null || service vsftpd restart 2>/dev/null || true
echo "vsftpd รีสตาร์ทแล้ว"
echo ""
echo "=============================================="
echo "ต้องตั้งรหัสผ่านใหม่ด้วยคำสั่ง:"
echo " sudo passwd $FTP_USER"
echo "แล้วลองเข้า FTP ด้วย user: $FTP_USER และรหัสที่ตั้ง"
echo "=============================================="