pax_global_header00006660000000000000000000000064152157430160014516gustar00rootroot0000000000000052 comment=7f7c970d398ebacf86dbf82bb31f1067225a0e1e main.raku000066400000000000000000000000311521574301600126640ustar00rootroot00000000000000task-run "tasks/install";tasks/000077500000000000000000000000001521574301600122075ustar00rootroot00000000000000tasks/install/000077500000000000000000000000001521574301600136555ustar00rootroot00000000000000tasks/install/task.bash000066400000000000000000000044511521574301600154620ustar00rootroot00000000000000#!/bin/bash set -euo pipefail echo "=== SFTP Setup on Rocky Linux ===" # 1. Ensure OpenSSH server is installed echo "Checking OpenSSH server installed..." if ! rpm -q openssh-server &>/dev/null; then echo "Installing OpenSSH server..." sudo dnf install -y openssh-server else echo "OpenSSH server already installed." fi echo "OpenSSH server version: $(sudo sshd -V 2>&1 | head -1)" # 2. Create group echo "Creating group sftpusers..." if ! getent group sftpusers &>/dev/null; then sudo groupadd sftpusers echo "Group sftpusers created successfully." else echo "Group sftpusers already exists." fi # 3. Create user echo "Creating user sftpuser..." if ! id sftpuser &>/dev/null; then sudo useradd -g sftpusers -s /sbin/nologin -d /sftp/sftpuser sftpuser echo "User sftpuser created and added to group sftpusers." else echo "User sftpuser already exists." fi # 4. Set up directory structure echo "Setting up directory /sftp/sftpuser/upload..." sudo mkdir -p /sftp/sftpuser/upload sudo chown root:root /sftp /sftp/sftpuser sudo chmod 755 /sftp /sftp/sftpuser sudo chown sftpuser:sftpusers /sftp/sftpuser/upload sudo chmod 755 /sftp/sftpuser/upload # 5. Backup and configure SSH for internal-sftp echo "Configuring SSH for SFTP chroot..." SSHD_CONFIG="/etc/ssh/sshd_config" BACKUP="${SSHD_CONFIG}.bak.$(date +%Y%m%d%H%M%S)" sudo cp -a "$SSHD_CONFIG" "$BACKUP" echo "Backup saved as $BACKUP" # Remove any existing internal-sftp subsystem line and add the correct one sudo sed -i '/^Subsystem\s\+sftp/d' "$SSHD_CONFIG" echo "Subsystem sftp internal-sftp" | sudo tee -a "$SSHD_CONFIG" > /dev/null # Append Match Group block if not present if ! sudo grep -q "^Match Group sftpusers" "$SSHD_CONFIG"; then sudo tee -a "$SSHD_CONFIG" > /dev/null << 'EOF' Match Group sftpusers ChrootDirectory /sftp/%u ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no EOF echo "Match Group block added." else echo "Match Group block already exists." fi # 6. Test configuration echo "Testing SSH configuration..." if sudo sshd -t; then echo "sshd configuration test: Syntax OK" else echo "sshd configuration test: FAILED" exit 1 fi # 7. Restart sshd echo "Restarting sshd service..." sudo systemctl restart sshd echo "sshd restarted." echo "=== SFTP setup complete. ==="tasks/install/task.check000066400000000000000000000004321521574301600156150ustar00rootroot00000000000000~regexp: OpenSSH \s+ server \s+ version \: \s+ (<[\S]>+) generator: <