#!/bin/bash # Warna untuk output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Fungsi untuk menampilkan header show_header() { echo -e "${GREEN}========================================${NC}" echo -e "${GREEN} FTP MANAGER TOOL${NC}" echo -e "${GREEN}========================================${NC}" } # Fungsi untuk mencari akun FTP yang ada find_existing_ftp() { echo -e "\n${YELLOW}Mencari akun FTP yang ada...${NC}" echo -e "${GREEN}========================================${NC}" # Cari pengguna dengan shell nologin/noshell dan direktori home valid awk -F: '($7 == "/sbin/nologin" || $7 == "/usr/local/cpanel/bin/noshell" || $7 == "/bin/false") && $6 != "/nonexistent" {print $1 "\t" $6}' /etc/passwd | column -t echo -e "\n${YELLOW}Catatan:${NC}" echo "- Akun dengan shell nologin/noshell biasanya digunakan untuk FTP" echo "- Password tidak ditampilkan karena tersimpan terenkripsi di /etc/shadow" } # Fungsi untuk membuat akun FTP baru create_new_ftp() { echo -e "\n${YELLOW}Membuat akun FTP baru...${NC}" echo -e "${GREEN}========================================${NC}" # Input username read -p "Masukkan username baru: " username # Validasi username if id "$username" &>/dev/null; then echo -e "${RED}Error: User '$username' sudah ada!${NC}" return 1 fi # Input password read -s -p "Masukkan password: " password echo read -s -p "Konfirmasi password: " password_confirm echo if [ "$password" != "$password_confirm" ]; then echo -e "${RED}Error: Password tidak cocok!${NC}" return 1 fi # Input direktori home (default: /home/$username) read -p "Masukkan direktori home (default: /home/$username): " home_dir home_dir=${home_dir:-/home/$username} # Buat user useradd -m -d "$home_dir" -s /sbin/nologin "$username" if [ $? -ne 0 ]; then echo -e "${RED}Error: Gagal membuat user!${NC}" return 1 fi # Set password echo "$username:$password" | chpasswd if [ $? -ne 0 ]; then echo -e "${RED}Error: Gagal set password!${NC}" userdel -r "$username" return 1 fi # Set permission chmod 750 "$home_dir" chown "$username:$username" "$home_dir" echo -e "${GREEN}Akun FTP berhasil dibuat!${NC}" echo "Username: $username" echo "Direktori: $home_dir" echo "Shell: /sbin/nologin" # Tambahkan ke vsftpd user_list jika ada if [ -f /etc/vsftpd/user_list ]; then echo "$username" >> /etc/vsftpd/user_list echo -e "${YELLOW}User ditambahkan ke vsftpd user_list${NC}" fi # Restart vsftpd jika aktif if systemctl is-active --quiet vsftpd; then systemctl restart vsftpd echo -e "${YELLOW}vsftpd service di-restart${NC}" fi } # Fungsi utama main() { show_header echo "Pilih opsi:" echo "1) Cari akun FTP yang ada" echo "2) Buat akun FTP baru" echo "3) Keluar" read -p "Masukkan pilihan [1-3]: " choice case $choice in 1) find_existing_ftp ;; 2) create_new_ftp ;; 3) echo -e "${GREEN}Keluar...${NC}" ; exit 0 ;; *) echo -e "${RED}Pilihan tidak valid!${NC}" ; exit 1 ;; esac } # Jalankan fungsi utama main