12월 21, 2025
25 분 읽기

주니어 시스템 관리자 면접 질문과 답변

interview
career-advice
job-search
entry-level
주니어 시스템 관리자 면접 질문과 답변
Milad Bonakdar

Milad Bonakdar

작성자

Linux, Windows Server, Active Directory, DNS, DHCP, 백업, 보안, 문제 해결을 다루는 실무형 질문으로 주니어 sysadmin 면접을 준비하세요.


소개

주니어 시스템 관리자 면접은 일반적인 시스템을 안정적으로 운영할 수 있는지, 기본 개념을 명확히 설명할 수 있는지, 추측이 아니라 절차에 따라 문제를 좁혀 갈 수 있는지를 봅니다. Linux 명령어, Windows Server, Active Directory, DNS, DHCP, 백업, 보안, 로그, 사용자 지원 상황에 대한 실무 질문을 예상하세요.

이 가이드는 증상을 확인하고, 단순한 원인부터 점검하고, 적절한 명령어나 관리 도구를 사용하고, 변경 사항을 기록하는 답변 방식을 연습하는 데 초점을 둡니다.

먼저 연습할 것

  • Linux에서 이동, 권한 확인, 서비스 관리, 로그 읽기.
  • Active Directory, 사용자, 그룹, 그룹 정책, DNS, DHCP가 어떻게 연결되는지 설명하기.
  • 느린 서버, 로그인 실패, 네트워크 문제, 공유 드라이브 접근 실패 같은 티켓 해결하기.
  • 백업, 패치, 최소 권한, 방화벽 규칙, 에스컬레이션에 대해 설명하기.

Linux 기본 사항

1. 매일 가장 많이 사용하는 Linux 명령어는 무엇입니까?

답변: 시스템 관리를 위한 필수 명령어:

# 파일 및 디렉토리 관리
ls -la          # 파일 상세 목록 표시
cd /path        # 디렉토리 변경
pwd             # 현재 작업 디렉토리 출력
mkdir folder    # 디렉토리 생성
rm -rf folder   # 디렉토리 삭제
cp source dest  # 파일 복사
mv old new      # 파일 이동/이름 변경

# 파일 보기 및 편집
cat file.txt    # 파일 내용 보기
less file.txt   # 페이지 단위로 파일 보기
tail -f /var/log/syslog  # 로그 파일 추적
vi/nano file.txt  # 파일 편집

# 권한
chmod 755 file  # 권한 변경
chown user:group file  # 소유자 변경
ls -l           # 권한 보기

# 프로세스 관리
ps aux          # 모든 프로세스 목록 표시
top/htop        # 프로세스 모니터링
kill PID        # 프로세스 종료
systemctl status service  # 서비스 상태 확인

# 시스템 정보
df -h           # 디스크 사용량
free -h         # 메모리 사용량
uptime          # 시스템 가동 시간
uname -a        # 시스템 정보

빈도: 매우 흔함
난이도: 쉬움


2. Linux 서버가 느리게 실행될 때 어떻게 문제를 해결합니까?

답변: 성능 문제에 대한 체계적인 접근 방식:

1. CPU 사용량 확인:

top
# CPU 사용량이 높은 프로세스 찾기
# 'P'를 눌러 CPU 사용량별로 정렬

# 또는 더 나은 시각화를 위해 htop 사용
htop

2. 메모리 확인:

free -h
# 스왑이 많이 사용되고 있는지 확인

# 메모리를 많이 사용하는 프로세스 찾기
ps aux --sort=-%mem | head -10

3. 디스크 I/O 확인:

iostat -x 1
# 높은 %util 값 찾기

# 디스크 공간 확인
df -h

# 큰 파일 찾기
du -sh /* | sort -rh | head -10

4. 네트워크 확인:

netstat -tuln  # 활성 연결
ss -s          # 소켓 통계

5. 로그 검토:

tail -f /var/log/syslog
journalctl -xe  # Systemd 로그
dmesg | tail    # 커널 메시지

빈도: 매우 흔함
난이도: 중간


3. cron을 사용하여 자동화된 작업을 어떻게 예약합니까?

답변: Cron은 Unix 계열 시스템에서 시간 기반 작업 스케줄러입니다.

Cron 구문:

┌───────────── 분 (0-59)
│ ┌───────────── 시 (0-23)
│ │ ┌───────────── 월의 날짜 (1-31)
│ │ │ ┌───────────── 월 (1-12)
│ │ │ │ ┌───────────── 요일 (0-6, 일요일=0)
│ │ │ │ │
* * * * * 실행할 명령어

일반적인 예:

# crontab 편집
crontab -e

# 매일 오전 2시에 백업 실행
0 2 * * * /home/user/backup.sh

# 매주 월요일 오전 9시에 스크립트 실행
0 9 * * 1 /home/user/weekly-report.sh

# 15분마다 실행
*/15 * * * * /home/user/check-status.sh

# 매월 1일에 실행
0 0 1 * * /home/user/monthly-cleanup.sh

# 매주 평일 오후 6시에 실행
0 18 * * 1-5 /home/user/end-of-day.sh

# 현재 cron 작업 목록 표시
crontab -l

# 모든 cron 작업 제거
crontab -r

특수 문자열:

@reboot    # 시작 시 한 번 실행
@daily     # 하루에 한 번 실행 (0 0 * * *)
@hourly    # 한 시간에 한 번 실행 (0 * * * *)
@weekly    # 일주일에 한 번 실행 (0 0 * * 0)
@monthly   # 한 달에 한 번 실행 (0 0 1 * *)

# 예시
@daily /home/user/daily-backup.sh

Cron 작업 로깅:

# 출력을 로그 파일로 리디렉션
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1

# 오류가 발생한 경우에만 이메일 보내기
0 2 * * * /home/user/backup.sh 2>&1 | mail -s "Backup Failed" [email protected]

Windows 작업 스케줄러:

# 예약 작업 생성
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 2am
Register-ScheduledTask -TaskName "Daily Backup" -Action $action -Trigger $trigger

# 예약 작업 목록 표시
Get-ScheduledTask

# 즉시 작업 실행
Start-ScheduledTask -TaskName "Daily Backup"

# 작업 비활성화
Disable-ScheduledTask -TaskName "Daily Backup"

모범 사례:

  • 스크립트에서 절대 경로 사용
  • crontab에서 PATH 변수 설정
  • 먼저 수동으로 스크립트 테스트
  • 디버깅을 위해 출력 로깅
  • 중복 실행을 방지하기 위해 잠금 사용

빈도: 매우 흔함
난이도: 쉬움-중간


Windows & Active Directory

4. Active Directory란 무엇이며 주요 구성 요소는 무엇입니까?

답변: **Active Directory (AD)**는 Microsoft의 Windows 네트워크용 디렉토리 서비스입니다.

주요 구성 요소:

Loading diagram...

핵심 개념:

  • 도메인: 관리 경계
  • 도메인 컨트롤러 (DC): AD를 호스팅하는 서버
  • 조직 단위 (OU): 객체를 위한 컨테이너
  • 사용자/그룹: ID 관리
  • 그룹 정책: 중앙 집중식 구성

일반적인 작업:

# 사용자 생성
New-ADUser -Name "John Doe" -SamAccountName jdoe -UserPrincipalName [email protected]

# 사용자를 그룹에 추가
Add-ADGroupMember -Identity "IT Staff" -Members jdoe

# 비밀번호 재설정
Set-ADAccountPassword -Identity jdoe -Reset

# 잠긴 계정 찾기
Search-ADAccount -LockedOut

# 도메인 컨트롤러 목록 표시
Get-ADDomainController -Filter *

빈도: 매우 흔함
난이도: 쉬움-중간


5. Linux 및 Windows에서 사용자 계정을 어떻게 생성하고 관리합니까?

답변: 사용자 관리는 핵심 시스템 관리자 책임입니다.

Linux 사용자 관리:

# 사용자 생성
sudo useradd -m -s /bin/bash john
# -m: 홈 디렉토리 생성
# -s: 셸 설정

# 비밀번호 설정
sudo passwd john

# 특정 UID 및 그룹으로 사용자 생성
sudo useradd -m -u 1500 -G sudo,developers john

# 기존 사용자 수정
sudo usermod -aG docker john  # 그룹에 추가
sudo usermod -s /bin/zsh john  # 셸 변경
sudo usermod -L john  # 계정 잠금
sudo usermod -U john  # 계정 잠금 해제

# 사용자 삭제
sudo userdel john  # 홈 디렉토리 유지
sudo userdel -r john  # 홈 디렉토리 제거

# 사용자 정보 보기
id john
finger john
cat /etc/passwd | grep john

그룹 관리:

# 그룹 생성
sudo groupadd developers

# 사용자를 그룹에 추가
sudo usermod -aG developers john

# 그룹에서 사용자 제거
sudo gpasswd -d john developers

# 그룹 삭제
sudo groupdel developers

# 사용자 그룹 목록 표시
groups john

파일 권한:

# 소유자 변경
sudo chown john:developers /var/www/project
sudo chown -R john:developers /var/www/project  # 재귀적

# 권한 변경
chmod 755 script.sh  # rwxr-xr-x
chmod u+x script.sh  # 사용자에게 실행 권한 추가
chmod g-w file.txt  # 그룹에게 쓰기 권한 제거
chmod o-r file.txt  # 다른 사용자에게 읽기 권한 제거

# 특수 권한
chmod 4755 file  # SUID
chmod 2755 dir   # SGID
chmod 1777 /tmp  # 스티키 비트

Windows 사용자 관리:

# 로컬 사용자 생성
New-LocalUser -Name "John" -Password (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)

# AD 사용자 생성
New-ADUser -Name "John Doe" `
    -GivenName "John" `
    -Surname "Doe" `
    -SamAccountName "jdoe" `
    -UserPrincipalName "[email protected]" `
    -Path "OU=Users,DC=company,DC=com" `
    -AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) `
    -Enabled $true

# 그룹에 추가
Add-ADGroupMember -Identity "IT Staff" -Members jdoe

# 사용자 수정
Set-ADUser -Identity jdoe -Department "IT" -Title "System Administrator"

# 계정 비활성화
Disable-ADAccount -Identity jdoe

# 비밀번호 재설정
Set-ADAccountPassword -Identity jdoe -Reset -NewPassword (ConvertTo-SecureString "NewP@ss" -AsPlainText -Force)

# 사용자 제거
Remove-ADUser -Identity jdoe

대량 사용자 생성:

#!/bin/bash
# 파일에서 여러 사용자 생성
while IFS=, read -r username fullname; do
    sudo useradd -m -c "$fullname" "$username"
    echo "$username:TempPass123" | sudo chpasswd
    sudo chage -d 0 "$username"  # 비밀번호 변경 강제
    echo "Created user: $username"
done < users.csv

빈도: 매우 흔함
난이도: 쉬움


네트워킹 기본 사항

6. DNS와 DHCP를 설명하십시오.

답변:

DNS (Domain Name System):

  • 도메인 이름을 IP 주소로 변환
  • 계층적 시스템
  • 포트 53 사용

DHCP (Dynamic Host Configuration Protocol):

  • 자동으로 IP 주소 할당
  • 서브넷 마스크, 게이트웨이, DNS 서버 제공
  • 포트 67 (서버) 및 68 (클라이언트) 사용

DNS 문제 해결:

# DNS 확인 테스트
nslookup google.com

# 특정 DNS 서버에 쿼리
dig @8.8.8.8 google.com

# DNS 캐시 확인 (Windows)
ipconfig /displaydns
ipconfig /flushdns

# DNS 캐시 확인 (Linux)
systemd-resolve --statistics
systemd-resolve --flush-caches

DHCP 문제 해결:

# IP 해제 및 갱신 (Windows)
ipconfig /release
ipconfig /renew

# IP 해제 및 갱신 (Linux)
sudo dhclient -r
sudo dhclient

# DHCP 임대 확인
cat /var/lib/dhcp/dhclient.leases

빈도: 매우 흔함
난이도: 쉬움-중간


백업 & 보안

7. 어떤 백업 전략을 구현하시겠습니까?

답변: 3-2-1 백업 규칙:

  • 데이터의 3개 복사본
  • 2개의 다른 미디어 유형
  • 1개의 오프사이트 복사본

백업 유형:

  • 전체: 전체 복사 (느림, 큼)
  • 증분: 마지막 백업 이후 변경 사항 (빠름, 작음)
  • 차등: 마지막 전체 백업 이후 변경 사항 (중간)

예제 백업 스크립트:

#!/bin/bash
# 간단한 백업 스크립트

BACKUP_DIR="/backup"
SOURCE_DIR="/var/www"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_$DATE.tar.gz"

# 백업 생성
tar -czf $BACKUP_DIR/$BACKUP_FILE $SOURCE_DIR

# 지난 7일만 유지
find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +7 -delete

# 원격 서버에 업로드 (선택 사항)
rsync -avz $BACKUP_DIR/$BACKUP_FILE user@backup-server:/backups/

echo "Backup completed: $BACKUP_FILE"

빈도: 흔함
난이도: 중간


8. 서버를 어떻게 보호합니까?

답변: 다층 보안 접근 방식:

1. 시스템 업데이트 유지:

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y

# CentOS/RHEL
sudo yum update -y

# Windows
Install-WindowsUpdate -AcceptAll

2. 방화벽 구성:

# UFW (Ubuntu)
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# firewalld (CentOS)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

3. 루트 로그인 비활성화:

# SSH 구성 편집
sudo vi /etc/ssh/sshd_config

# 설정:
PermitRootLogin no
PasswordAuthentication no  # SSH 키 사용

sudo systemctl restart sshd

4. 로그 모니터링:

# fail2ban 설치
sudo apt install fail2ban

# fail2ban 구성
sudo vi /etc/fail2ban/jail.local

빈도: 매우 흔함
난이도: 중간


문제 해결

9. 사용자가 공유 드라이브에 액세스할 수 없습니다. 어떻게 문제를 해결하시겠습니까?

답변: 체계적인 문제 해결 단계:

1. 문제 확인:

  • 문제를 재현할 수 있습니까?
  • 한 사용자에게만 영향을 미칩니까, 아니면 여러 사용자에게 영향을 미칩니까?

2. 네트워크 연결 확인:

# 파일 서버 핑
ping fileserver.domain.com

# SMB 연결 테스트
telnet fileserver.domain.com 445

3. 권한 확인:

# Windows: 공유 권한 확인
Get-SmbShareAccess -Name "SharedFolder"

# NTFS 권한 확인
Get-Acl "\\server\share" | Format-List

4. 사용자 계정 확인:

# 사용자가 올바른 그룹에 있는지 확인
Get-ADUser username -Properties MemberOf

# 계정이 잠겨 있는지 확인
Get-ADUser username -Properties LockedOut

5. 드라이브 매핑 확인:

# Windows: 매핑된 드라이브 목록 표시
net use

# 제거 및 다시 매핑
net use Z: /delete
net use Z: \\server\share /persistent:yes

6. 서버 확인:

  • 파일 서버가 실행 중입니까?
  • 공유가 여전히 사용 가능합니까?
  • 서버 로그 확인

빈도: 매우 흔함
난이도: 쉬움-중간


10. 시스템 로그를 어떻게 관리하고 분석합니까?

답변: 로그 관리는 문제 해결 및 보안에 매우 중요합니다.

일반적인 로그 위치 (Linux):

/var/log/syslog          # 시스템 로그 (Debian/Ubuntu)
/var/log/messages        # 시스템 로그 (RHEL/CentOS)
/var/log/auth.log        # 인증 로그
/var/log/kern.log        # 커널 로그
/var/log/apache2/        # Apache 웹 서버
/var/log/nginx/          # Nginx 웹 서버
/var/log/mysql/          # MySQL 데이터베이스

로그 보기:

# 전체 로그 보기
cat /var/log/syslog

# 마지막 50줄 보기
tail -n 50 /var/log/syslog

# 실시간으로 로그 추적
tail -f /var/log/syslog

# 페이지 단위로 보기
less /var/log/syslog

# 로그에서 검색
grep "error" /var/log/syslog
grep -i "failed" /var/log/auth.log  # 대소문자 구분 없음

Systemd Journal:

# 모든 로그 보기
journalctl

# 특정 서비스에 대한 로그 보기
journalctl -u nginx
journalctl -u ssh

# 로그 추적
journalctl -f

# 부팅 이후 로그 보기
journalctl -b

# 시간 범위에 대한 로그 보기
journalctl --since "2024-01-01" --until "2024-01-02"
journalctl --since "1 hour ago"

# 우선 순위별로 보기
journalctl -p err  # 오류만
journalctl -p warning  # 경고 이상

# 파일로 내보내기
journalctl -u nginx --since today > nginx-logs.txt

로그 로테이션:

# logrotate 구성
sudo vi /etc/logrotate.d/myapp

# 예제 구성
/var/log/myapp/*.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0644 www-data www-data
    sharedscripts
    postrotate
        systemctl reload myapp
    endscript
}

# logrotate 테스트
sudo logrotate -d /etc/logrotate.d/myapp  # 드라이 런
sudo logrotate -f /etc/logrotate.d/myapp  # 강제 로테이션

Windows 이벤트 뷰어:

# 응용 프로그램 로그 보기
Get-EventLog -LogName Application -Newest 50

# 시스템 로그 보기
Get-EventLog -LogName System -Newest 50

# 오류 수준별로 필터링
Get-EventLog -LogName System -EntryType Error -Newest 20

# 특정 이벤트 검색
Get-EventLog -LogName Security | Where-Object {$_.EventID -eq 4625}

# 로그 내보내기
Get-EventLog -LogName Application | Export-Csv -Path C:\logs\app-logs.csv

중앙 집중식 로깅:

# rsyslog 클라이언트 설치
sudo apt install rsyslog

# 원격 로깅 구성
sudo vi /etc/rsyslog.conf
# 추가: *.* @@log-server:514

sudo systemctl restart rsyslog

로그 분석 도구:

  • grep/awk/sed: 명령줄 파싱
  • GoAccess: 실시간 웹 로그 분석기
  • ELK Stack: Elasticsearch, Logstash, Kibana
  • Splunk: 엔터프라이즈 로그 관리

빈도: 흔함
난이도: 쉬움-중간


결론

주니어 sysadmin 면접에서는 암기한 정의보다 직접 해 본 기본기가 더 중요합니다. 작은 실습 환경을 만들고, 사용자를 생성하고, 가능하다면 컴퓨터를 도메인에 가입시키고, 공유 폴더를 구성하고, DNS나 DHCP 문제를 의도적으로 만든 뒤 원인을 어떻게 찾았는지 설명해 보세요.

마지막 복습은 다음에 집중하세요.

  1. Linux: 명령어, 권한, 서비스, 프로세스, 디스크 사용량, 로그.
  2. Windows: Active Directory, 그룹, 그룹 정책 기본, 이벤트 뷰어, PowerShell.
  3. 네트워크: DNS, DHCP, IP 설정, 포트, 연결 테스트.
  4. 보안: 업데이트, 최소 권한, SSH/RDP 접근, 방화벽, 백업.
  5. 문제 해결: 반복 가능한 절차, 명확한 기록, 에스컬레이션 판단.
Newsletter subscription

실제로 효과가 있는 주간 커리어 팁

최신 인사이트를 받은 편지함으로 직접 받아보세요

채용률을 60% 높이는 이력서 만들기

몇 분 만에 면접을 6배 더 많이 받는 것으로 입증된 맞춤형 ATS 친화적 이력서를 만드세요.

더 나은 이력서 만들기

이 게시물 공유

면접 콜백을 2배로 늘리세요

직무 설명에 맞게 이력서를 맞춤화하는 후보자는 2.5배 더 많은 면접을 받습니다. 우리 AI를 사용하여 모든 지원서에 대해 즉시 자동으로 이력서를 맞춤화하세요.