본문 바로가기

스크립트

일반적으로 불필요한 계정 목록

반응형

일반적으로 불필요한 계정 목록

1. 프린터, 메일, 뉴스 관련 (대부분 서버에서 불필요)

lp → 프린터 서비스 계정

mail → 메일 서버 계정

news → 뉴스 서버 관련 계정

uucp → 오래된 파일 전송 프로토콜 계정

list → 메일링 리스트 서비스 계정

2. 특정 서비스 관련 (안 쓰면 불필요)

irc → IRC 채팅 서버 계정

polkitd → GUI에서 관리자 권한 요청용 (CLI 서버에서는 불필요)

uuidd → UUID 생성 서비스 (대부분 서버에서 필요 없음)

3. 기타 불필요할 가능성이 높은 계정

games → 게임 실행용 계정 (일반 서버 불필요)

pollinate → 클라우드용 난수 생성 (클라우드 아닌 서버에서는 불필요)

dhcpcd → DHCP 클라이언트 (정적 IP 사용 시 불필요)

tss → TPM 보안 칩 관련 (사용하지 않으면 불필요)

landscape → Ubuntu 원격 관리 서비스 (사용하지 않으면 불필요)

fwupd-refresh → 펌웨어 업데이트 서비스 (자동 업데이트 안 하면 불필요)

usbmux → iPhone/iPad 연결용 (연결 안 하면 불필요)

728x90

불필요한 계정을 삭제하는 Bash 스크립트

스크립트 작성

vim remove_unused_users.sh
#!/bin/bash

# 삭제할 불필요한 계정 목록
UNUSED_USERS=(
    lp mail news uucp list irc polkitd uuidd
    games pollinate dhcpcd tss landscape fwupd-refresh usbmux
)

# 로그 파일 경로
LOG_FILE="/var/log/remove_unused_users.log"

# 로그 기록 함수
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') $1" | tee -a "$LOG_FILE"
}

log "🔹 불필요한 계정 삭제 시작"

for user in "${UNUSED_USERS[@]}"; do
    if id "$user" &>/dev/null; then
        SHELL=$(getent passwd "$user" | cut -d: -f7)
        if [[ "$SHELL" == "/usr/sbin/nologin" || "$SHELL" == "/bin/false" ]]; then
            log "⚙️  계정 삭제 중: $user"
            userdel -r "$user" &>> "$LOG_FILE"
            if [[ $? -eq 0 ]]; then
                log "✅ 삭제 완료: $user"
            else
                log "❌ 삭제 실패: $user"
            fi
        else
            log "⏩ 삭제하지 않음 (로그인 가능 계정): $user"
        fi
    else
        log "🔹 존재하지 않는 계정: $user"
    fi
done

log "✅ 불필요한 계정 삭제 완료"

실행 권한 부여

chmod +x remove_unused_users.sh

실행

bash remove_unused_users.sh

 

728x90
반응형