#!/bin/bash

### root 계정 원격접속 제한

# sshd_config 파일 경로
SSHD_CONFIG="/etc/ssh/sshd_config"

# 백업 파일 생성
cp $SSHD_CONFIG "${SSHD_CONFIG}.bak"

# 포트 변경
sed -i 's/^#Port 22/Port 10022/' $SSHD_CONFIG

# PermitRootLogin 설정 변경
sed -i 's/^#PermitRootLogin .*/PermitRootLogin prohibit-password/' $SSHD_CONFIG
sed -i 's/^PermitRootLogin .*/PermitRootLogin prohibit-password/' $SSHD_CONFIG
sed -i 's/^#ClientAliveInterval .*/ClientAliveInterval 0/' $SSHD_CONFIG
sed -i 's/^#ClientAliveCountMax.*/ClientAliveCountMax 3/' $SSHD_CONFIG

# SSH 서비스 재시작
systemctl restart sshd

echo "sshd_config 파일이 성공적으로 업데이트되었고, SSH 서비스가 다시 시작되었습니다."

### 비밀번호 복잡성 설정

# 파일 경로 설정
SYSTEM_AUTH="/etc/pam.d/system-auth"
PASSWORD_AUTH="/etc/pam.d/password-auth"
PWQUALITY_CONF="/etc/security/pwquality.conf"

# 백업 파일 생성
cp $SYSTEM_AUTH "${SYSTEM_AUTH}.bak"
cp $PASSWORD_AUTH "${PASSWORD_AUTH}.bak"
cp $PWQUALITY_CONF "${PWQUALITY_CONF}.bak"

# system-auth와 password-auth 파일에서 pam_pwquality.so 줄에 enforce_for_root 추가
for FILE in $SYSTEM_AUTH $PASSWORD_AUTH; do
    if grep -q 'password.*requisite.*pam_pwquality.so.*local_users_only' $FILE; then
        sed -i '/password.*requisite.*pam_pwquality.so.*local_users_only/ s/$/ enforce_for_root/' $FILE
        echo "$FILE 파일의 pam_pwquality.so 모듈에 enforce_for_root 옵션이 성공적으로 추가되었습니다."
    else
        echo "$FILE 파일에서 password requisite pam_pwquality.so local_users_only 줄을 찾을 수 없습니다."
    fi
done

grep -qxF 'auth required /usr/lib64/security/pam_faillock.so preauth silent audit deny=5 unlock_time=120' /etc/pam.d/system-auth || echo 'auth required /usr/lib64/security/pam_faillock.so preauth silent audit deny=5 unlock_time=120' >> $SYSTEM_AUTH
grep -qxF 'auth [default=die] /usr/lib64/security/pam_faillock.so authfail deny=5 unlock_time=120' /etc/pam.d/system-auth || echo 'auth [default=die] /usr/lib64/security/pam_faillock.so authfail deny=5 unlock_time=120' >> $SYSTEM_AUTH

# pwquality.conf 파일의 설정 변경
sed -i 's/^#*\s*lcredit\s*=.*/lcredit = -1/' $PWQUALITY_CONF
sed -i 's/^#*\s*ucredit\s*=.*/ucredit = -1/' $PWQUALITY_CONF
sed -i 's/^#*\s*dcredit\s*=.*/dcredit = -1/' $PWQUALITY_CONF
sed -i 's/^#*\s*ocredit\s*=.*/ocredit = -1/' $PWQUALITY_CONF
sed -i 's/^#*\s*minlen\s*=.*/minlen = 9/' $PWQUALITY_CONF
sed -i 's/^#*\s*difok\s*=.*/difok = N/' $PWQUALITY_CONF

# 설정이 없는 경우 파일 끝에 추가
grep -q '^\s*lcredit\s*=' $PWQUALITY_CONF || echo 'lcredit = -1' >> $PWQUALITY_CONF
grep -q '^\s*ucredit\s*=' $PWQUALITY_CONF || echo 'ucredit = -1' >> $PWQUALITY_CONF
grep -q '^\s*dcredit\s*=' $PWQUALITY_CONF || echo 'dcredit = -1' >> $PWQUALITY_CONF
grep -q '^\s*ocredit\s*=' $PWQUALITY_CONF || echo 'ocredit = -1' >> $PWQUALITY_CONF
grep -q '^\s*minlen\s*=' $PWQUALITY_CONF || echo 'minlen = 9' >> $PWQUALITY_CONF
grep -q '^\s*difok\s*=' $PWQUALITY_CONF || echo 'difok = N' >> $PWQUALITY_CONF

systemctl restart systemd-logind

echo "pwquality.conf 파일이 성공적으로 업데이트되었습니다."

###root 계정 su 제한
# wheel 그룹이 없으면 생성
if ! grep -q '^wheel:' /etc/group; then
    groupadd wheel
    echo "wheel 그룹이 생성되었습니다."
else
    echo "wheel 그룹이 이미 존재합니다."
fi

# /usr/bin/su 파일의 소유 그룹을 wheel로 변경하고 권한 설정
chgrp wheel /usr/bin/su
chmod 4750 /usr/bin/su
echo "/usr/bin/su 파일의 소유 그룹이 wheel로 변경되었고 권한이 설정되었습니다."

# ablecloud 사용자를 wheel 그룹에 추가
usermod -aG wheel ablecloud
echo "ablecloud 사용자가 wheel 그룹에 추가되었습니다."

# /etc/pam.d/su 파일에서 auth required pam_wheel.so use_uid 줄의 주석 해제
if grep -q '^#.*auth\s\+required\s\+pam_wheel.so\s\+use_uid' /etc/pam.d/su; then
    sed -i 's/^#\s*\(auth\s\+required\s\+pam_wheel.so\s\+use_uid\)/\1/' /etc/pam.d/su
    echo "/etc/pam.d/su 파일에서 auth required pam_wheel.so use_uid 줄의 주석이 해제되었습니다."
else
    echo "/etc/pam.d/su 파일에 auth required pam_wheel.so use_uid 줄이 이미 활성화되어 있거나 존재하지 않습니다."
fi






###비밀번호 설정
# /etc/login.defs 파일 경로
LOGIN_DEFS="/etc/login.defs"

# 백업 파일 생성
cp $LOGIN_DEFS "${LOGIN_DEFS}.bak"

# PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_MIN_LEN, PASS_WARN_AGE 값 설정
# 이미 설정되어 있는 값을 변경하거나 주석이 되어 있는 경우 값을 업데이트

# PASS_MAX_DAYS 설정
if grep -q '^PASS_MAX_DAYS' $LOGIN_DEFS; then
    sed -i 's/^PASS_MAX_DAYS .*/PASS_MAX_DAYS 31/' $LOGIN_DEFS
else
    echo 'PASS_MAX_DAYS 31' >> $LOGIN_DEFS
fi

# PASS_MIN_DAYS 설정
if grep -q '^PASS_MIN_DAYS' $LOGIN_DEFS; then
    sed -i 's/^PASS_MIN_DAYS .*/PASS_MIN_DAYS 1/' $LOGIN_DEFS
else
    echo 'PASS_MIN_DAYS 1' >> $LOGIN_DEFS
fi

# PASS_MIN_LEN 설정
if grep -q '^PASS_MIN_LEN' $LOGIN_DEFS; then
    sed -i 's/^PASS_MIN_LEN .*/PASS_MIN_LEN 9/' $LOGIN_DEFS
else
    echo 'PASS_MIN_LEN 9' >> $LOGIN_DEFS
fi

# PASS_WARN_AGE 설정
if grep -q '^PASS_WARN_AGE' $LOGIN_DEFS; then
    sed -i 's/^PASS_WARN_AGE .*/PASS_WARN_AGE 7/' $LOGIN_DEFS
else
    echo 'PASS_WARN_AGE 7' >> $LOGIN_DEFS
fi

echo "/etc/login.defs 파일이 성공적으로 업데이트되었습니다."

### 비밀번호 최소 길이 설정
# /etc/login.defs 파일 경로
LOGIN_DEFS="/etc/login.defs"

# 백업 파일 생성
cp $LOGIN_DEFS "${LOGIN_DEFS}.bak"

# PASS_MAX_DAYS, PASS_MIN_DAYS, PASS_MIN_LEN, PASS_WARN_AGE 값 설정
# 주석이 되어 있는 경우 주석을 제거하고 설정 값을 적용

# PASS_MAX_DAYS 설정
if grep -q '^#*\s*PASS_MAX_DAYS' $LOGIN_DEFS; then
    sed -i 's/^#*\s*PASS_MAX_DAYS\t.*/PASS_MAX_DAYS\t31/' $LOGIN_DEFS
else
    echo -e 'PASS_MAX_DAYS\t31' >> $LOGIN_DEFS
fi

# PASS_MIN_DAYS 설정
if grep -q '^#*\s*PASS_MIN_DAYS' $LOGIN_DEFS; then
    sed -i 's/^#*\s*PASS_MIN_DAYS\t.*/PASS_MIN_DAYS\t1/' $LOGIN_DEFS
else
    echo -e 'PASS_MIN_DAYS\t1' >> $LOGIN_DEFS
fi

# PASS_MIN_LEN 설정
if grep -q '^#*\s*PASS_MIN_LEN' $LOGIN_DEFS; then
    sed -i 's/^#*\s*PASS_MIN_LEN\t.*/PASS_MIN_LEN\t9/' $LOGIN_DEFS
else
    echo -e 'PASS_MIN_LEN\t9' >> $LOGIN_DEFS
fi

# PASS_WARN_AGE 설정
if grep -q '^#*\s*PASS_WARN_AGE' $LOGIN_DEFS; then
    sed -i 's/^#*\s*PASS_WARN_AGE\t.*/PASS_WARN_AGE\t7/' $LOGIN_DEFS
else
    echo -e 'PASS_WARN_AGE\t7' >> $LOGIN_DEFS
fi

# 중복된 설정 제거
# 중복된 항목이 있는 경우, 첫 번째 항목만 남기고 나머지 항목 삭제
awk '!/^PASS_/ || !x[$0]++' $LOGIN_DEFS > /tmp/login.defs

# /etc/login.defs 파일을 덮어쓸 때 출력 억제
mv -f /tmp/login.defs $LOGIN_DEFS > /dev/null 2>&1

echo "/etc/login.defs 파일이 성공적으로 업데이트되었습니다."


###Session Timeout 설정
# /etc/profile 파일 경로
PROFILE_FILE="/etc/profile"

# 백업 파일 생성
cp $PROFILE_FILE "${PROFILE_FILE}.bak"

# TMOUT 설정 추가
# 파일의 최하단에 TMOUT 설정을 추가합니다.
# 기존에 TMOUT 설정이 있는 경우 주석을 제거하고 설정 값을 적용합니다.
if grep -q '^TMOUT=' $PROFILE_FILE; then
    sed -i '/^TMOUT=/d' $PROFILE_FILE
fi

# TMOUT과 export TMOUT을 최하단에 추가
echo -e 'TMOUT=300\nexport TMOUT' >> $PROFILE_FILE

echo "/etc/profile 파일의 최하단에 TMOUT 설정이 성공적으로 추가되었습니다."


###/etc/passwd 파일 소유자 및 권한 설정
PASSWD_FILE="/etc/passwd"

# 현재 소유자 및 권한 확인
current_owner=$(stat -c "%U" $PASSWD_FILE)
current_permissions=$(stat -c "%a" $PASSWD_FILE)

# 소유자와 권한을 root 및 644로 설정
chown root:root $PASSWD_FILE
chmod 644 $PASSWD_FILE

# 변경 후 소유자 및 권한 확인
new_owner=$(stat -c "%U" $PASSWD_FILE)
new_permissions=$(stat -c "%a" $PASSWD_FILE)

# 변경 사항 출력
if [ "$current_owner" != "root" ] || [ "$current_permissions" -ne 644 ]; then
    echo "/etc/passwd 파일의 소유자와 권한이 변경되었습니다."
    echo "현재 소유자: $current_owner, 현재 권한: $current_permissions"
    echo "변경된 소유자: $new_owner, 변경된 권한: $new_permissions"
else
    echo "/etc/passwd 파일의 소유자와 권한이 이미 올바릅니다."
fi

###/etc/shadow 파일 소유자 및 권한 설정
# /etc/shadow 파일 경로
SHADOW_FILE="/etc/shadow"

# 현재 소유자 및 권한 확인
current_owner=$(stat -c "%U" $SHADOW_FILE)
current_permissions=$(stat -c "%a" $SHADOW_FILE)

# 소유자와 권한을 root 및 400으로 설정
chown root:root $SHADOW_FILE
chmod 400 $SHADOW_FILE

# 변경 후 소유자 및 권한 확인
new_owner=$(stat -c "%U" $SHADOW_FILE)
new_permissions=$(stat -c "%a" $SHADOW_FILE)

# 변경 사항 출력
if [ "$current_owner" != "root" ] || [ "$current_permissions" -ne 400 ]; then
    echo "/etc/shadow 파일의 소유자와 권한이 변경되었습니다."
    echo "현재 소유자: $current_owner, 현재 권한: $current_permissions"
    echo "변경된 소유자: $new_owner, 변경된 권한: $new_permissions"
else
    echo "/etc/shadow 파일의 소유자와 권한이 이미 올바릅니다."
fi

###/etc/hosts 파일 소유자 및 권한 설정
# /etc/hosts 파일 경로
HOSTS_FILE="/etc/hosts"

# 현재 소유자 및 권한 확인
current_owner=$(stat -c "%U" $HOSTS_FILE)
current_permissions=$(stat -c "%a" $HOSTS_FILE)

# 소유자와 권한을 root 및 644로 설정
chown root:root $HOSTS_FILE
chmod 644 $HOSTS_FILE

# 변경 후 소유자 및 권한 확인
new_owner=$(stat -c "%U" $HOSTS_FILE)
new_permissions=$(stat -c "%a" $HOSTS_FILE)

# 변경 사항 출력
if [ "$current_owner" != "root" ] || [ "$current_permissions" -ne 644 ]; then
    echo "/etc/hosts 파일의 소유자와 권한이 변경되었습니다."
    echo "현재 소유자: $current_owner, 현재 권한: $current_permissions"
    echo "변경된 소유자: $new_owner, 변경된 권한: $new_permissions"
else
    echo "/etc/hosts 파일의 소유자와 권한이 이미 올바릅니다."
fi

###/etc/rsyslog.conf 파일 소유자 및 권한 설정
#!/bin/bash

# /etc/rsyslog.conf 파일 경로
RSYSLOG_CONF="/etc/rsyslog.conf"

# 현재 소유자 및 권한 확인
current_owner=$(stat -c "%U" $RSYSLOG_CONF)
current_permissions=$(stat -c "%a" $RSYSLOG_CONF)

# 소유자와 권한을 root 및 640으로 설정
chown root:root $RSYSLOG_CONF
chmod 640 $RSYSLOG_CONF

# 변경 후 소유자 및 권한 확인
new_owner=$(stat -c "%U" $RSYSLOG_CONF)
new_permissions=$(stat -c "%a" $RSYSLOG_CONF)

# 변경 사항 출력
if [ "$current_owner" != "root" ] || [ "$current_permissions" -ne 640 ]; then
    echo "/etc/rsyslog.conf 파일의 소유자와 권한이 변경되었습니다."
    echo "현재 소유자: $current_owner, 현재 권한: $current_permissions"
    echo "변경된 소유자: $new_owner, 변경된 권한: $new_permissions"
else
    echo "/etc/rsyslog.conf 파일의 소유자와 권한이 이미 올바릅니다."
fi

###/etc/services 파일 소유자 및 권한 설정
# /etc/services 파일 경로
SERVICES_FILE="/etc/services"

# 현재 소유자 및 권한 확인
current_owner=$(stat -c "%U" $SERVICES_FILE)
current_permissions=$(stat -c "%a" $SERVICES_FILE)

# 소유자와 권한을 root 및 644로 설정
chown root:root $SERVICES_FILE
chmod 644 $SERVICES_FILE

# 변경 후 소유자 및 권한 확인
new_owner=$(stat -c "%U" $SERVICES_FILE)
new_permissions=$(stat -c "%a" $SERVICES_FILE)

# 변경 사항 출력
if [ "$current_owner" != "root" ] || [ "$current_permissions" -ne 644 ]; then
    echo "/etc/services 파일의 소유자와 권한이 변경되었습니다."
    echo "현재 소유자: $current_owner, 현재 권한: $current_permissions"
    echo "변경된 소유자: $new_owner, 변경된 권한: $new_permissions"
else
    echo "/etc/services 파일의 소유자와 권한이 이미 올바릅니다."
fi


###umask 설정 관리
declare -A files_permissions=(
    ["$HOME/.profile"]=600
    ["$HOME/.kshrc"]=600
    ["$HOME/.bashrc"]=600
    ["$HOME/.cshrc"]=600
    ["$HOME/.login"]=600
    ["$HOME/.bash_profile"]=600
    ["$HOME/.tcshrc"]=600
    ["$HOME/.sh_history"]=600
    ["$HOME/.bash_history"]=600
    ["/tcb/file/auth"]=400
    ["/etc/profile"]=755
    ["/etc/inittab"]=644
    ["/etc/snmp/snmpd.conf"]=644
)

# 파일과 권한을 순회하면서 설정
for file in "${!files_permissions[@]}"; do
    if [ -f "$file" ]; then
        # 현재 권한 확인
        current_permissions=$(stat -c "%a" "$file")
        
        # 권한 설정
        chmod "${files_permissions[$file]}" "$file"
        
        # 변경 후 권한 확인
        new_permissions=$(stat -c "%a" "$file")
        
        # 권한이 변경되었는지 확인
        if [ "$current_permissions" -ne "${files_permissions[$file]}" ]; then
            echo "$file 파일의 권한이 $current_permissions에서 $new_permissions로 변경되었습니다."
        else
            echo "$file 파일의 권한이 이미 ${files_permissions[$file]}입니다."
        fi
    else
        echo "$file 파일이 존재하지 않습니다."
    fi
done


# /etc/profile 파일 경로
PROFILE_FILE="/etc/profile"

# 추가할 내용
UMASK_SETTING="umask=022"
EXPORT_UMASK_SETTING="export umask=022"

# /etc/profile 파일의 최하단에 추가할 내용
add_umask_settings() {
    # 파일이 존재하는지 확인
    if [ -f "$PROFILE_FILE" ]; then
        # 현재 설정 확인
        if grep -q "^$UMASK_SETTING" "$PROFILE_FILE" && grep -q "^$EXPORT_UMASK_SETTING" "$PROFILE_FILE"; then
            echo "$PROFILE_FILE 파일에 $UMASK_SETTING 및 $EXPORT_UMASK_SETTING 설정이 이미 존재합니다."
        else
            # 파일의 끝에 추가
            echo -e "\n$UMASK_SETTING" >> "$PROFILE_FILE"
            echo "$EXPORT_UMASK_SETTING" >> "$PROFILE_FILE"
            echo "$PROFILE_FILE 파일의 끝에 $UMASK_SETTING 및 $EXPORT_UMASK_SETTING 설정이 추가되었습니다."
        fi
    else
        echo "$PROFILE_FILE 파일이 존재하지 않습니다."
    fi
}

###crond 서비스 권한 설정
# /usr/bin/crontab 파일의 권한을 750으로 변경
CRONTAB_FILE="/usr/bin/crontab"
if [ -f "$CRONTAB_FILE" ]; then
    chmod 750 "$CRONTAB_FILE"
    echo "$CRONTAB_FILE 파일의 권한을 750으로 변경했습니다."
else
    echo "$CRONTAB_FILE 파일이 존재하지 않습니다."
fi

# cron 관련 파일들의 소유자를 root, 권한을 640으로 변경
declare -a cron_files=(
    "/etc/crontab"
    "/etc/cron.d"
    "/etc/cron.daily"
    "/etc/cron.hourly"
    "/etc/cron.monthly"
    "/etc/cron.weekly"
    "/etc/cron.deny"
    "/etc/cron.allow"
    "/var/spool/cron"
    "/var/spool/cron/crontabs"
)

for file in "${cron_files[@]}"; do
    if [ -e "$file" ]; then
        chown root:root "$file"
        chmod 640 "$file"
        echo "$file 파일의 소유자를 root로, 권한을 640으로 변경했습니다."
    else
        echo "$file 파일이 존재하지 않거나 접근할 수 없습니다."
    fi
done

# /var/spool/cron/crontabs 디렉토리의 권한을 700으로 변경
if [ -d "/var/spool/cron/crontabs" ]; then
    chmod 700 "/var/spool/cron/crontabs"
    echo "/var/spool/cron/crontabs 디렉토리의 권한을 700으로 변경했습니다."
else
    echo "/var/spool/cron/crontabs 디렉토리가 존재하지 않습니다."
fi


###불필요한 사용자 삭제
# 삭제할 사용자 목록
USERS_TO_REMOVE=("ftp" "lp")

for USER in "${USERS_TO_REMOVE[@]}"; do
    # 사용자가 존재하는지 확인
    if id "$USER" &>/dev/null; then
        # 사용자 삭제
        userdel "$USER"

        # 사용자 홈 디렉토리 및 메일 스풀 파일 삭제
        HOME_DIR=$(getent passwd "$USER" | cut -d: -f6)
        if [ -d "$HOME_DIR" ]; then
            rm -rf "$HOME_DIR"
            echo "$HOME_DIR 디렉토리를 삭제했습니다."
        fi

        MAIL_SPOOL="/var/spool/mail/$USER"
        if [ -f "$MAIL_SPOOL" ]; then
            rm -f "$MAIL_SPOOL"
            echo "$MAIL_SPOOL 메일 스풀 파일을 삭제했습니다."
        fi

        echo "$USER 사용자를 삭제했습니다."
    else
        echo "$USER 사용자가 존재하지 않습니다."
    fi
done


### at 서비스 권한 설정
# /usr/bin/at 파일의 권한을 4750으로 변경
AT_FILE="/usr/bin/at"
if [ -f "$AT_FILE" ]; then
    chmod 4750 "$AT_FILE"
    echo "$AT_FILE 파일의 권한을 4750으로 변경했습니다."
else
    echo "$AT_FILE 파일이 존재하지 않습니다."
fi

# at 관련 파일 및 디렉토리
declare -a at_files=(
    "/etc/at.allow"
    "/etc/at.deny"
    "/var/spool/at"
    "/var/spool/at/jobs"
    "/var/spool/at/atd"  # /var/spool/at/atd 디렉토리 또는 파일
)

for file in "${at_files[@]}"; do
    if [ -e "$file" ]; then
        chown root:root "$file"
        chmod 640 "$file"
        echo "$file 파일의 소유자를 root로, 권한을 640으로 변경했습니다."
    else
        echo "$file 파일이 존재하지 않거나 접근할 수 없습니다."
    fi
done

# /var/spool/at 디렉토리의 권한을 700으로 변경
if [ -d "/var/spool/at" ]; then
    chmod 700 "/var/spool/at"
    echo "/var/spool/at 디렉토리의 권한을 700으로 변경했습니다."
else
    echo "/var/spool/at 디렉토리가 존재하지 않습니다."
fi

# /var/spool/at/jobs 디렉토리의 권한을 700으로 변경
if [ -d "/var/spool/at/jobs" ]; then
    chmod 700 "/var/spool/at/jobs"
    echo "/var/spool/at/jobs 디렉토리의 권한을 700으로 변경했습니다."
else
    echo "/var/spool/at/jobs 디렉토리가 존재하지 않습니다."
fi

# atd 서비스가 활성화되어 있는지 확인하고 재시작
if systemctl is-active --quiet atd; then
    systemctl restart atd
    echo "atd 서비스가 재시작되었습니다."
else
    echo "atd 서비스가 활성화되어 있지 않습니다."
fi

###NFS 설정파일 접근 권한

# /etc/export 파일의 소유자를 root로 설정하고 권한을 644로 변경
EXPORT_FILE="/etc/export"
if [ -f "$EXPORT_FILE" ]; then
    sudo chown root:root "$EXPORT_FILE"
    sudo chmod 644 "$EXPORT_FILE"
    echo "$EXPORT_FILE 파일의 소유자가 root로 설정되고 권한이 644로 변경되었습니다."
else
    echo "$EXPORT_FILE 파일이 존재하지 않습니다."
fi

### SUID, SGID 설정 및 권한 설정
# 적용할 파일 목록
files=(
  "/sbin/dump"
  "/sbin/restore"
  "/sbin/unix_chkpwd"
  "/usr/bin/at"
  "/usr/bin/lpq"
  "/usr/bin/lpq-lqd"
  "/usr/bin/lpr"
  "/usr/bin/lpr-lpd"
  "/usr/bin/lprm"
  "/usr/bin/lprm-lpd"
  "/usr/bin/newgrp"
  "/usr/sbin/lpc"
  "/usr/sbin/lpc-lpd"
  "/usr/sbin/traceroute"
)

# 파일 목록을 순회하며 권한 수정
for file in "${files[@]}"; do
  if [ -e "$file" ]; then
    echo "Processing $file"
    # setuid 및 setgid 비트를 제거
    chmod -s "$file"
    # 권한을 4750으로 설정
    chmod 4750 "$file"
  else
    echo "$file does not exist."
  fi
done

echo "Permissions have been updated."

### 로그온 시 경고 메시지 출력
# 경고 메시지 정의
warning_message="** WARNING ** Unauthorized access to this system is prohibited. ** WARNING **\n\nPlease ensure you have proper authorization to access this system."

echo -e "$warning_message" | sudo tee /etc/motd > /dev/null

echo "MOTD 파일에 경고 메시지를 추가했습니다."
