Skip to content

KR_Linux_Admin

somaz edited this page Mar 30, 2026 · 1 revision

리눅스 시스템 관리 (Q3-Q6)

Q3: Linux 파일 권한과 사용자 관리

질문: Linux의 파일 권한 시스템(rwx)을 설명하고, chmod, chown, /etc/passwd, /etc/shadow, /etc/skel의 역할을 설명하세요.

답변:

파일 권한 구조

ls -l /etc/hosts
-rw-r--r-- 1 root root 220 Nov 6 10:00 /etc/hosts
│││││││││  │ │    │    │   │          └─ 파일명
│││││││││  │ │    │    │   └─ 수정 시간
│││││││││  │ │    │    └─ 파일 크기
│││││││││  │ │    └─ 그룹
│││││││││  │ └─ 소유자
│││││││││  └─ 링크 수
│││││││└─ 기타 사용자 권한 (r--)
││││││└─ 그룹 권한 (r--)
│││└─ 소유자 권한 (rw-)
││└─ 특수 권한 (setuid, setgid, sticky bit)
│└─ 파일 타입 (- = 일반 파일, d = 디렉터리, l = 심볼릭 링크)

chmod (권한 변경)

# Symbolic 방식
chmod u+x file.sh       # 소유자에게 실행 권한 추가
chmod g-w file.txt      # 그룹 쓰기 권한 제거
chmod o=r file.txt      # 기타 사용자는 읽기만

# Numeric 방식 (8진수)
chmod 755 file.sh       # rwxr-xr-x
chmod 644 file.txt      # rw-r--r--
chmod 600 ~/.ssh/id_rsa # rw-------

# 권한 숫자 계산
# r = 4, w = 2, x = 1
# 755 = rwxr-xr-x = (4+2+1)(4+0+1)(4+0+1)

/etc/passwd 구조

cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
somaz:x:1000:1000:Somaz User:/home/somaz:/bin/bash
 │   │ │   │   │         │            └─ 기본 셸
 │   │ │   │   │         └─ 홈 디렉터리
 │   │ │   │   └─ GECOS (사용자 설명)
 │   │ │   └─ GID (그룹 ID)
 │   │ └─ UID (사용자 ID, root=0)
 │   └─ 비밀번호 (x = /etc/shadow에 저장)
 └─ 사용자명

/etc/shadow (비밀번호 저장)

sudo cat /etc/shadow
root:$6$xyz...:19000:0:99999:7:::
 │    │        │     │  │    │
 │    │        │     │  │    └─ 경고 기간
 │    │        │     │  └─ 최대 사용 기간
 │    │        │     └─ 최소 사용 기간
 │    │        └─ 마지막 변경일
 │    └─ 암호화된 비밀번호 ($6$ = SHA-512)
 └─ 사용자명

/etc/skel (사용자 템플릿)

# /etc/skel 내용
ls -la /etc/skel/
.bash_logout
.bashrc
.profile

# 새 사용자 생성 시 자동 복사
sudo useradd -m newuser
# → /home/newuser/에 /etc/skel/ 내용 복사됨

Q4: systemd 서비스 관리

질문: systemd의 주요 개념과 서비스 관리 방법을 설명하세요. Unit 파일 작성 방법과 주요 명령어를 포함하세요.

답변:

systemd 기본 개념

systemd는 최신 Linux 배포판의 init 시스템 및 서비스 매니저입니다.

주요 Unit 타입:

  • Service: 데몬 프로세스 (.service)
  • Socket: IPC 소켓 (.socket)
  • Target: 여러 Unit 그룹 (.target)
  • Mount: 파일시스템 마운트 (.mount)
  • Timer: 크론 작업 대체 (.timer)

systemctl 명령어

# 서비스 시작/중지/재시작
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx    # 설정만 재로드

# 부팅 시 자동 시작 설정
sudo systemctl enable nginx
sudo systemctl disable nginx

# 상태 확인
systemctl status nginx
systemctl is-active nginx      # active/inactive
systemctl is-enabled nginx     # enabled/disabled

# 전체 서비스 목록
systemctl list-units --type=service
systemctl list-unit-files --type=service

Service Unit 파일 작성

# /etc/systemd/system/myapp.service
[Unit]
Description=My Application
After=network.target
Wants=network-online.target

[Service]
Type=simple
User=myapp
Group=myapp
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/bin/start.sh
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

서비스 등록 및 활성화

# Unit 파일 리로드
sudo systemctl daemon-reload

# 서비스 시작 및 활성화
sudo systemctl enable --now myapp.service

# 로그 확인
journalctl -u myapp.service
journalctl -u myapp.service -f  # 실시간
journalctl -u myapp.service --since today

Q5: 네트워크 관리 명령어

질문: Linux의 네트워크 관리 명령어(ip, ss, route)를 설명하고, 실무 활용 사례를 제시하세요.

답변:

ip 명령어 (iproute2)

# 네트워크 인터페이스 확인
ip link show
ip addr show
ip addr show eth0

# IP 주소 추가/삭제
sudo ip addr add 192.168.1.100/24 dev eth0
sudo ip addr del 192.168.1.100/24 dev eth0

# 인터페이스 활성화/비활성화
sudo ip link set eth0 up
sudo ip link set eth0 down

# 라우팅 테이블
ip route show
sudo ip route add default via 192.168.1.1
sudo ip route add 10.0.0.0/8 via 192.168.1.254

# ARP 테이블
ip neigh show

ss 명령어 (Socket Statistics)

# TCP 연결 확인
ss -tunap
# -t: TCP
# -u: UDP
# -n: 숫자로 표시
# -a: 모든 소켓
# -p: 프로세스 정보

# 특정 포트 확인
ss -tunap | grep :80
ss -tulpn | grep :22

# 연결 통계
ss -s

네트워크 트러블슈팅

# 연결 테스트
ping -c 4 8.8.8.8
ping6 -c 4 2001:4860:4860::8888

# 경로 추적
traceroute google.com
mtr google.com  # 실시간 traceroute

# DNS 조회
dig google.com
nslookup google.com
host google.com

# 포트 스캔
nc -zv 192.168.1.1 22
nmap -p 22,80,443 192.168.1.1

Q6: 프로세스 관리 및 모니터링

질문: Linux의 프로세스 관리 명령어(ps, top, htop, kill)를 설명하고, 프로세스 우선순위 조정 방법을 설명하세요.

답변:

ps 명령어

# 기본 사용법
ps aux
ps -ef

# 특정 프로세스 검색
ps aux | grep nginx
pgrep -a nginx

# 프로세스 트리
ps auxf
pstree -p

top / htop

# top 주요 키
# P: CPU 사용률 정렬
# M: 메모리 사용률 정렬
# k: 프로세스 종료
# r: nice 값 변경
# q: 종료

# htop (더 강력한 인터페이스)
sudo apt install htop
htop

kill 시그널

# 주요 시그널
kill -l  # 모든 시그널 목록

# SIGTERM (15): 정상 종료 요청
kill 1234
kill -15 1234
kill -TERM 1234

# SIGKILL (9): 강제 종료
kill -9 1234
kill -KILL 1234

# SIGHUP (1): 재시작/설정 리로드
kill -HUP 1234

# 프로세스 이름으로 종료
pkill nginx
killall nginx

프로세스 우선순위

# nice 값: -20 ~ 19 (낮을수록 높은 우선순위)
# 일반 사용자: 0 ~ 19만 가능

# nice로 시작
nice -n 10 ./heavy-process.sh

# 실행 중인 프로세스 우선순위 변경
sudo renice -n -5 -p 1234
sudo renice -n 10 -u username

Q7: Linux Kernel 관리 및 보안

질문: Linux Kernel 모듈 관리 방법과 SELinux/AppArmor의 차이점을 설명하세요.

답변:

Kernel 모듈 관리

# 로드된 모듈 확인
lsmod
lsmod | grep e1000

# 모듈 정보
modinfo e1000e
modinfo -p e1000e  # 파라미터

# 모듈 로드
sudo modprobe e1000e
sudo insmod /path/to/module.ko

# 모듈 언로드
sudo modprobe -r e1000e
sudo rmmod e1000e

# 부팅 시 자동 로드
echo "e1000e" | sudo tee -a /etc/modules

# 모듈 블랙리스트
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf

SELinux vs AppArmor

SELinux (Red Hat 계열):

# 상태 확인
getenforce
sestatus

# 모드 변경
sudo setenforce 0  # Permissive
sudo setenforce 1  # Enforcing

# 영구 설정
sudo vi /etc/selinux/config
SELINUX=enforcing

# 컨텍스트 확인
ls -Z /var/www/html
ps -eZ | grep httpd

# 컨텍스트 변경
sudo chcon -t httpd_sys_content_t /var/www/html/index.html
sudo restorecon -Rv /var/www/html

AppArmor (Debian/Ubuntu 계열):

# 상태 확인
sudo aa-status

# 프로파일 모드
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx    # Enforce
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx   # Complain

# 프로파일 비활성화
sudo ln -s /etc/apparmor.d/usr.sbin.nginx /etc/apparmor.d/disable/
sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.nginx

참고 자료

Clone this wiki locally