#!/bin/bash # 테스트 서버용 공통 설치 스크립트 (Rocky Linux 9) # Tailscale 호환, 외부 미노출 아님, 최소 권한, Apache + FTP + Vim + Bash 설정 # 홈 디렉토리 권한 문제 해결 포함 WEB_USER=$USER WEB_HOME=$(eval echo "~$WEB_USER") WEB_ROOT="$WEB_HOME/www" echo "설치 사용자: $WEB_USER" echo "웹 루트: $WEB_ROOT" # 1. 시스템 업데이트 sudo dnf update -y # 2. firewalld 비활성화 sudo systemctl stop firewalld sudo systemctl disable firewalld echo "firewalld 비활성화 완료" # 3. 홈 디렉토리 권한 조정 (Apache가 진입 가능하도록) chmod 711 "$WEB_HOME" # 4. www 폴더 생성, 소유자/권한 제한 mkdir -p "$WEB_ROOT" chmod 750 "$WEB_ROOT" chown $WEB_USER:$WEB_USER "$WEB_ROOT" # 5. Apache 설치 sudo dnf install -y httpd sudo systemctl enable --now httpd # Apache DocumentRoot 설정 APACHE_CONF="/etc/httpd/conf.d/${WEB_USER}.conf" sudo bash -c "cat > $APACHE_CONF" < ServerAdmin webmaster@localhost DocumentRoot $WEB_ROOT Options -Indexes +FollowSymLinks AllowOverride All Require all granted ErrorLog logs/${WEB_USER}-error.log CustomLog logs/${WEB_USER}-access.log combined EOF sudo systemctl restart httpd # 6. FTP 설치 및 설정 (vsftpd) sudo dnf install -y vsftpd sudo systemctl enable --now vsftpd # FTP 설정 sudo sed -i 's/anonymous_enable=YES/anonymous_enable=NO/' /etc/vsftpd/vsftpd.conf sudo sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/' /etc/vsftpd/vsftpd.conf sudo bash -c "echo 'allow_writeable_chroot=YES' >> /etc/vsftpd/vsftpd.conf" sudo bash -c "echo 'listen_address=127.0.0.1' >> /etc/vsftpd/vsftpd.conf" sudo systemctl restart vsftpd # 7. SSH 설정 강화 sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config sudo systemctl restart sshd # 8. Vim 설치 및 Visual 모드 비활성화 (줄 번호 제거) sudo dnf install -y vim echo "set mouse=" >> "$WEB_HOME/.vimrc" chown $WEB_USER:$WEB_USER "$WEB_HOME/.vimrc" # 9. Bash 가독성 향상 설정 BASHRC="$WEB_HOME/.bashrc" echo "" >> $BASHRC echo "# --- Bash 가독성 설정 ---" >> $BASHRC echo "export PS1='[\u@\h \W]\$ '" >> $BASHRC echo "alias ll='ls -alF --color=auto'" >> $BASHRC echo "alias la='ls -A --color=auto'" >> $BASHRC echo "alias l='ls -CF --color=auto'" >> $BASHRC echo "export HISTCONTROL=ignoreboth" >> $BASHRC chown $WEB_USER:$WEB_USER $BASHRC # 10. SELinux 웹 루트 접근 허용 sudo chcon -R -t httpd_sys_content_t "$WEB_ROOT" echo "테스트 서버용 공통 설정 완료! Apache + FTP + Vim + Bash 환경 구성됨." echo "VM IP로 접속 시 Forbidden 문제 없이 /home/$USER/www 접근 가능"