Cert Notes/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 1급 · 1급리눅스마스터 1급
  • Week 1
    • 1.운영체제와 리눅스: 커널이 하는 일
    • 2.자유 소프트웨어와 배포판: 라이선스가 만든 생태계
    • 3.설치와 부팅: 전원을 켜는 순간부터
    • 4.파일시스템 구조와 파일의 종류: 모든 것은 파일이다
    • 5.Week 1 종합 복습: 개념을 꿰뚫는 시간
  • Week 2
    • 1.파일과 디렉터리 명령: 리눅스 파일 시스템을 손끝으로 다루기
    • 2.텍스트 처리: 유닉스의 진짜 힘, 파이프라인으로 데이터를 다듬다
    • 3.vi/vim 정밀 정복: 손을 떼지 않고 편집하는 에디터의 미학
    • 4.압축과 아카이브, 그리고 도움말: 파일을 묶고 줄이고, 스스로 배우는 법
    • 5.Week 2 종합 복습: 명령행에서 살아남기 위한 모든 것
  • Week 3
    • 1.셸의 정체: 명령을 해석하는 프로그램과 변수의 세계
    • 2.흐름을 잇고 비트는 기술: 리다이렉션, 파이프, 메타문자
    • 3.셸을 길들이다: 별칭, 히스토리, 그리고 작업 제어
    • 4.셸 스크립트: 명령을 코드로 엮는 첫걸음
    • 5.Week 3 종합 복습: 셸과 스크립트의 큰 그림
  • Week 4
    • 1.계정 파일 4종: /etc/passwd · /etc/shadow · /etc/group · /etc/gshadow 필드 해부
    • 2.계정 관리 명령과 권한 상승: useradd부터 sudo까지
    • 3.권한의 산수: rwx · 8진수 chmod · 소유권 · umask 계산
    • 4.특수 권한과 ACL: SetUID · SetGID · Sticky bit · getfacl/setfacl
    • 5.Week 4 종합 복습: 계정·권한 체계를 한 장으로 꿰기
  • Week 5
    • 1.파일시스템 종류와 구조: ext2/3/4 · xfs · btrfs · 저널링 · inode와 블록
    • 2.파티션과 마운트: fdisk · gdisk · parted · mkfs · mount/umount · /etc/fstab 6필드
    • 3.LVM과 스왑: PV·VG·LV 계층 · pvcreate부터 lvextend·resize2fs · mkswap·swapon
    • 4.RAID와 쿼터, 디스크 점검: RAID 0/1/5/6/10 · mdadm · quota/edquota · fsck/df/du/lsblk/blkid
    • 5.Week 5 종합 복습: 파일시스템·파티션·LVM·스왑·RAID·쿼터 총정리와 실전 연습
  • Week 6
    • 1.프로세스 관리: PID부터 시그널·우선순위까지
    • 2.데몬과 프로세스 생애: fork·exec부터 좀비·고아까지
    • 3.시스템 초기화: init·런레벨에서 systemd·target까지
    • 4.작업 예약: cron의 5필드부터 at·batch까지
    • 5.Week 6 종합 복습: 프로세스·초기화·예약을 한 장으로 꿰기
  • Week 7
    • 1.패키지 관리: RPM·YUM/DNF와 DEB·APT 두 계열을 한 손에
    • 2.소스 컴파일과 라이브러리: tar→configure→make→make install의 의미
    • 3.커널과 모듈: 시스템의 심장과 그 확장 부품 다루기
    • 4.장치 관리와 프린터: /dev·udev로 하드웨어 다루고 CUPS로 인쇄하기
    • 5.Week 7 종합 복습: 백업과 시스템 관리의 큰 그림
    • 6.가상화 관리: 하이퍼바이저·KVM·컨테이너로 한 서버를 여럿처럼 쓰기
  • Week 8
    • 1.네트워크 기초: OSI 7계층과 IP 주소·서브넷 계산
    • 2.네트워크 설정: 인터페이스·게이트웨이·DNS를 손으로 잡기
    • 3.네트워크 진단: ping부터 tcpdump까지 문제를 좁히는 명령들
    • 4.네트워크 장비·프로토콜·이중화: 계층으로 꿰는 인프라
    • 5.Week 8 종합 복습: 네트워크를 계층 한 장으로 꿰기
  • Week 9
    • 1.DNS와 BIND: 이름을 주소로 바꾸는 인터넷의 전화번호부
    • 2.DHCP와 NTP: 주소를 나눠 주고 시계를 맞추는 두 서비스
    • 3.Apache 웹 서버: httpd.conf와 가상 호스트의 모든 것
    • 4.Nginx와 리버스 프록시: 이벤트 기반 웹 서버의 설계
    • 5.Week 9 종합 복습: 이름·주소·시간·웹을 한 장으로
    • 6.데이터베이스 서비스: MySQL/MariaDB 설치부터 백업·복구까지
  • Week 10
    • 1.메일 서비스: MTA·MDA·MUA와 SMTP·POP3·IMAP의 삼각 구도
    • 2.파일 전송 서비스: FTP의 능동·수동 모드와 vsftpd
    • 3.원격 접속의 표준: SSH와 sshd_config, 키 인증, 포트 포워딩
    • 4.원격 GUI: VNC와 X 윈도 시스템의 클라이언트·서버 역전
    • 5.Week 10 종합 복습: 네트워크 서비스를 포트 한 장으로 꿰기
  • Week 11
    • 1.Samba: 윈도와 리눅스를 잇는 파일·프린터 공유
    • 2.NFS: 유닉스 세계의 표준 파일 공유
    • 3.방화벽: iptables와 firewalld
    • 4.접근 제어와 보안: TCP Wrapper, SELinux, 로그 관리
    • 5.Week 11 종합 복습: 공유, 방화벽, 보안의 큰 그림
  • Week 12
    • 1.명령어 옵션 빈출 정리: 실기 단답으로 굳히는 핵심 명령
    • 2.설정 파일 경로·핵심 지시어 총정리: 빈칸 채우기를 위한 정밀 암기
    • 3.디스크·LVM·권한 작업형: 시나리오를 명령 순서로 풀어내기
    • 4.프로세스·스케줄링·systemd 작업형: 운영 명령을 시나리오로 굳히기
    • 5.시스템 작업형 모의고사 + 오답노트: 12문항으로 굳히기
  • Week 13
    • 1.네트워크 설정·진단 작업형: 손으로 IP를 세우고 길을 뚫는다
    • 2.서비스 설정파일 단답: 지시어 하나가 합격을 가른다
    • 3.셸 스크립트 작성형: 조건·반복·함수로 실무를 자동화한다
    • 4.보안·방화벽·로그 작업형: 규칙을 쓰고 컨텍스트를 바로잡는다
    • 5.네트워크·서비스 작업형 모의 + 오답노트
  • Week 14
    • 1.1차 과목① 종합 모의: 리눅스 실무의 이해 약점 정리
    • 2.1차 과목② 종합 모의: 리눅스 시스템 관리 약점 정리
    • 3.1차 과목③ 종합 모의: 네트워크와 서비스의 활용 약점 정리
    • 4.2차 실기 종합 모의: 단답·작업형 실전 훈련
    • 5.최종 오답·암기카드 총정리와 시험 당일 전략 (70일 마무리)
합격 후기
← 리눅스마스터 1급/Week 1/Day 4
리눅스마스터 1급· AssociateWeek 1 · Day 4읽기 약 14분

Day 4 - 파일시스템 구조와 파일의 종류: 모든 것은 파일이다

📌 핵심 정리

  • 리눅스는 단일 루트(/) 트리이며, 디렉터리 배치는 FHS 표준으로 약속되어 있다.
  • /proc·/sys는 디스크가 아니라 커널이 메모리에서 만들어내는 가상 파일시스템이다.
  • 파일 종류는 ls -l 첫 글자로 7가지 — - d l b c s p.
  • 파일의 본질은 이름이 아니라 inode다. 이름은 디렉터리의 "이름 → inode 번호" 표에만 있다.
  • 하드링크 = 같은 inode의 또 다른 이름(파티션·디렉터리 불가), 심볼릭링크 = 경로를 담은 새 inode(둘 다 가능).

FHS — 디렉터리 구조의 약속

Day 1에서 만난 "모든 것은 파일이다"라는 철학이 실제로 어떻게 구현되는지, 그 첫 축인 공간적 구조부터 본다.

  • /bin, /etc, /var 같은 배치는 무작위가 아니라 **FHS(Filesystem Hierarchy Standard, 파일시스템 계층 표준)**라는 공식 규약을 따른다.
  • 덕분에 어떤 배포판을 쓰든 "설정 파일은 /etc에, 로그는 /var/log에 있다"는 약속이 지켜진다. 이 표준이 없다면 배포판마다 위치가 제각각이라 관리가 불가능했을 것이다.
  • 윈도우와 근본적으로 다르다. 윈도우는 드라이브마다 C:, D:처럼 별도의 루트가 있지만, 리눅스는 **단 하나의 루트(/)**에서 뻗어나가는 단일 계층 트리다.
  • 다른 디스크나 USB는 이 트리의 특정 디렉터리에 "마운트(mount)"되어 가지로 합쳐진다.
디렉터리역할핵심 내용
/루트전체 트리의 시작점
/bin필수 명령어ls, cp, cat 등 모든 사용자용 기본 명령
/sbin시스템 명령어fdisk, ip 등 관리자용 명령
/etc설정 파일passwd, fstab 등 시스템 전역 설정
/home사용자 홈일반 사용자의 개인 디렉터리
/root관리자 홈root 계정의 홈 디렉터리
/var가변 데이터로그(/var/log), 메일, 캐시
/tmp임시 파일재부팅 시 삭제될 수 있는 임시 공간
/usr사용자 프로그램추가 설치된 응용 프로그램(/usr/bin)
/dev장치 파일디스크·터미널 등 하드웨어 표현
/proc프로세스 정보가상 파일시스템, 커널/프로세스 상태
/sys시스템 정보가상 파일시스템, 하드웨어/드라이버 정보
/lib공유 라이브러리/bin, /sbin이 쓰는 라이브러리
/boot부팅 파일커널(vmlinuz), initramfs, GRUB
/mnt, /media마운트 지점임시 마운트(/mnt), 자동 마운트(/media)
/opt선택 패키지서드파티 대형 응용 프로그램

💡 개념: /bin과 /sbin의 차이를 기억하자. /bin은 모든 사용자가 쓰는 일반 명령(ls, cp), /sbin은 주로 관리자(root)가 쓰는 시스템 관리 명령(fdisk, reboot)이다. "s"는 system 또는 superuser를 뜻한다. 마찬가지로 /usr/bin, /usr/sbin도 같은 구분을 따른다. 최근 배포판은 /bin을 /usr/bin의 심볼릭링크로 통합(usrmerge)하는 추세다.

가상 파일시스템 — /proc와 /sys

  • /proc와 /sys는 디스크에 실제로 존재하는 파일이 아니라, 커널이 메모리상에서 실시간으로 만들어내는 **가상 파일시스템(virtual filesystem)**이다.
  • "모든 것은 파일"이라는 철학이 가장 극적으로 드러나는 곳이다.
  • 프로세스 정보, CPU 정보, 메모리 사용량 같은 커널 내부 상태를 파일을 읽듯이 확인할 수 있다.
# /proc - 커널과 프로세스 정보를 파일처럼 읽기
cat /proc/cpuinfo           # CPU 상세 정보
cat /proc/meminfo           # 메모리 사용 현황
cat /proc/version           # 커널 버전
ls /proc/1/                 # PID 1번 프로세스의 정보 디렉터리
 
# /sys - 하드웨어와 드라이버 정보
cat /sys/class/net/eth0/address    # 네트워크 인터페이스 MAC 주소
 
# 직접 쳐보기: 자신의 CPU 코어 수를 파일에서 세어보기
grep -c processor /proc/cpuinfo

🔍 더 깊이: /proc의 각 숫자 디렉터리(/proc/1234)는 PID 1234 프로세스에 대응한다. 그 안의 status, cmdline, fd/를 읽으면 그 프로세스가 어떤 명령으로 실행됐고 어떤 파일을 열고 있는지 알 수 있다. top, ps 같은 도구들도 사실 내부적으로 /proc를 읽어 정보를 보여주는 것이다. 가상 파일시스템은 0바이트 크기로 보이지만 읽으면 실시간 데이터가 나온다.

파일의 7가지 종류

ls -l 명령의 맨 앞 글자 하나가 그 파일의 종류를 알려준다. 이 식별 문자는 1급 시험의 단골 출제 포인트다.

식별자종류설명
-일반 파일(regular)텍스트, 실행 바이너리, 이미지 등
d디렉터리(directory)다른 파일들을 담는 폴더
l심볼릭 링크(symbolic link)다른 파일을 가리키는 바로가기
b블록 장치(block device)디스크처럼 블록 단위 I/O (예: /dev/sda)
c문자 장치(character device)키보드처럼 문자 단위 I/O (예: /dev/tty)
s소켓(socket)프로세스 간 양방향 통신
p파이프(named pipe, FIFO)프로세스 간 단방향 통신
# ls -l의 첫 글자로 파일 종류 확인
ls -l /dev/sda              # b로 시작 → 블록 장치
ls -l /dev/tty             # c로 시작 → 문자 장치
ls -l /etc/passwd          # -로 시작 → 일반 파일
ls -ld /etc                # d로 시작 → 디렉터리
 
# file 명령으로 내용 기반 파일 종류 판별
file /etc/passwd           # ASCII text
file /bin/ls               # ELF 실행 바이너리
  • 블록 장치(b): 데이터를 정해진 크기의 블록 단위로 읽고 쓰며 버퍼링과 임의 접근이 가능하다. 디스크, SSD, USB.
  • 문자 장치(c): 데이터를 한 글자씩 순차적으로 흘려보낸다. 키보드, 마우스, 시리얼 포트, 터미널.
  • 소켓(s)과 파이프(p): 프로세스 간 통신(IPC) 수단. 파이프(FIFO, named pipe)는 한 방향으로만 흐르고, 소켓은 양방향이며 네트워크 통신에도 쓰인다.

⚠️ 함정: 시험에서 "디스크 /dev/sda는 어떤 종류의 장치 파일인가?"라고 물으면 답은 **블록 장치(b)**다. "키보드나 터미널은?"이라고 물으면 **문자 장치(c)**다. 블록(랜덤 접근, 버퍼링)과 문자(순차, 스트림)의 구분을 헷갈리지 말자. /dev/sda의 's'는 SCSI/SATA를 뜻하지 socket의 's'가 아니다.

inode — 파일의 진짜 정체

링크를 이해하려면 먼저 inode(아이노드, index node)를 알아야 한다. 리눅스 파일시스템의 가장 근본적인 개념이다.

  • 흔히 "파일 = 이름 + 내용"이라고 생각하지만, 리눅스에서 파일의 본질은 inode다. inode는 파일에 대한 모든 메타데이터를 담은 자료구조다.
    • 파일 종류와 접근 권한(rwx)
    • 소유자(UID)와 그룹(GID)
    • 파일 크기
    • 타임스탬프(수정·접근·변경 시각)
    • 링크 수(이 inode를 가리키는 이름의 개수)
    • 실제 데이터가 저장된 디스크 블록의 주소
  • 핵심은 파일 이름은 inode에 포함되지 않는다는 점이다. 파일 이름은 디렉터리 안에 "이름 → inode 번호" 매핑으로 저장될 뿐이다.
  • 즉 디렉터리는 사실 "이름과 inode 번호의 짝을 담은 표"다.
# inode 번호 확인
ls -i file.txt             # 파일의 inode 번호 표시
stat file.txt              # inode 번호, 크기, 권한, 타임스탬프 등 상세
df -i                      # 파일시스템별 inode 사용량

💡 개념: 파일시스템을 만들 때 inode 개수가 정해진다. 디스크 용량이 남아도 inode가 고갈되면 더 이상 파일을 만들 수 없다(df -i로 확인). 작은 파일을 무수히 만드는 메일 서버 등에서 "용량은 남았는데 No space left on device" 오류가 나는 것이 바로 inode 고갈 때문이다. 이것이 inode가 실무에서 중요한 이유다.

하드링크 vs 심볼릭링크 — 핵심 비교

1급 시험에서 거의 매번 출제되는 최중요 주제다.

  • 하드링크(hard link) = 같은 inode를 가리키는 또 다른 이름.
    • 새 inode를 만들지 않고, 기존 inode를 가리키는 이름(디렉터리 엔트리)만 하나 더 추가한다.
    • 원본과 하드링크는 inode 번호가 완전히 같고 사실상 동등하다. 둘 중 어느 것이 "원본"인지 구분할 수 없다.
    • inode의 링크 수가 1 증가하며, 모든 이름을 지워 링크 수가 0이 되어야 실제 데이터가 삭제된다.
  • 심볼릭링크(symbolic link, soft link) = 다른 파일의 경로(이름)를 담고 있는 별도의 파일. 윈도우의 "바로가기"와 같다.
    • 자기만의 새 inode를 가지며, 그 안에 "가리키는 대상의 경로"가 문자열로 저장된다.
    • 원본을 찾아갈 때는 그 경로를 따라간다.
항목하드링크심볼릭링크
inode원본과 동일자신만의 새 inode
가리키는 대상inode(데이터) 직접경로(이름) 문자열
원본 삭제 시데이터 유지(링크 수만 감소)깨진 링크(dangling)가 됨
다른 파일시스템불가능가능
디렉터리 대상불가능(일반적으로)가능
크기원본과 같음대상 경로 문자열 길이
# 하드링크 생성 (ln, 옵션 없음)
ln original.txt hardlink.txt
ls -li original.txt hardlink.txt   # inode 번호가 동일함을 확인
 
# 심볼릭링크 생성 (ln -s)
ln -s original.txt symlink.txt
ls -li original.txt symlink.txt    # inode 번호가 다름, l로 표시
 
# 직접 쳐보기: 원본을 지운 뒤 차이를 관찰
echo "hello" > orig.txt
ln orig.txt hard.txt
ln -s orig.txt soft.txt
rm orig.txt
cat hard.txt               # 정상 출력 (데이터 유지)
cat soft.txt               # No such file (깨진 링크)
  • 위 실습이 두 링크의 본질적 차이를 가장 잘 보여준다.
  • 원본 orig.txt를 삭제해도 하드링크 hard.txt는 같은 inode를 직접 가리키므로 데이터가 살아있다(링크 수가 2→1로 줄었을 뿐).
  • 반면 심볼릭링크 soft.txt는 "orig.txt라는 경로"를 저장하고 있는데 그 경로가 사라졌으므로 깨진 링크가 된다.

⚠️ 함정: "심볼릭링크는 다른 파일시스템(파티션)과 디렉터리를 가리킬 수 있지만, 하드링크는 둘 다 불가능하다"가 핵심 출제 포인트다. 이유는 명확하다. 하드링크는 inode 번호를 공유하는데, inode 번호는 각 파일시스템 안에서만 유일하므로 파티션을 넘을 수 없다. 디렉터리 하드링크를 금지하는 이유는 파일시스템 트리에 순환(loop)이 생겨 find 같은 도구가 무한 반복에 빠지는 것을 막기 위함이다.

🔍 더 깊이: ls -l로 디렉터리를 보면 권한 옆에 숫자가 있다(예: drwxr-xr-x 2). 이 숫자가 바로 inode의 링크 수다. 새 디렉터리를 만들면 링크 수가 기본 2다. 자기 자신을 가리키는 .과 부모가 자식을 가리키는 이름, 이렇게 2개의 하드링크가 자동 생성되기 때문이다. 하위 디렉터리를 하나 만들 때마다 그 안의 ..이 부모를 가리키므로 부모의 링크 수가 1씩 늘어난다.

📚 유래/사례: "inode"라는 이름의 유래는 데니스 리치도 정확히 기억하지 못한다고 밝힌 바 있다. 가장 유력한 설은 "index node"의 줄임말로, 파일의 정보를 색인(index)하는 노드라는 의미다. 1970년대 초 유닉스 초기 파일시스템 설계에서 탄생한 이 개념은 50년이 지난 지금도 ext4, XFS 등 리눅스 파일시스템의 근간으로 살아있다.

절대경로와 상대경로

  • 절대경로(absolute path): 루트(/)에서 시작하는 완전한 경로. 항상 /로 시작하며, 현재 위치와 무관하게 동일한 파일을 가리킨다. 예: /home/user/docs/file.txt.
  • 상대경로(relative path): 현재 작업 디렉터리(pwd)를 기준으로 한 경로. /로 시작하지 않는다.
  • 특수 기호: .(현재 디렉터리), ..(부모 디렉터리), ~(홈 디렉터리).
pwd                        # 현재 작업 디렉터리(절대경로) 확인
cd /etc                    # 절대경로로 이동
cd ../var                  # 상대경로: 부모로 올라간 뒤 var로
cd ~                       # 홈 디렉터리로
cd -                       # 직전 디렉터리로 토글

💡 개념: .과 ..은 단순한 기호가 아니라 모든 디렉터리에 실제로 존재하는 하드링크다. ls -a로 보면 어떤 디렉터리에든 .(자기 자신)과 ..(부모)가 보인다. 이것이 디렉터리의 기본 링크 수가 2인 이유와 연결된다.

다음 시간에는 이번 주에 배운 운영체제 개념·라이선스·부팅·파일시스템을 종합 복습하고, 시험 유형의 문제로 실력을 점검한다.

📖 용어

  • FHS : 리눅스 디렉터리를 어디에 무엇을 둘지 정한 표준. 배포판이 달라도 위치가 같은 이유다.
  • 마운트(mount) : 별도의 디스크나 파티션을 트리의 특정 디렉터리에 붙여 하나의 나무로 합치는 것.
  • 가상 파일시스템 : /proc·/sys처럼 디스크가 아니라 커널이 메모리에서 실시간으로 만들어내는 파일들.
  • inode : 파일의 메타데이터(권한·소유자·크기·데이터 블록 주소)를 담는 자료구조. 파일명은 여기 없다.
  • inode 고갈 : 용량은 남았는데 inode를 다 써서 파일을 못 만드는 상태. df -i로 확인한다.
  • 링크 수 : 한 inode를 가리키는 이름의 개수. 0이 되어야 실제 데이터가 지워진다.
  • 하드링크 : 같은 inode를 가리키는 또 하나의 이름. 파티션을 넘을 수 없고 디렉터리에는 못 건다.
  • 심볼릭링크 : 대상의 경로 문자열을 담은 별도 파일. 원본이 사라지면 깨진 링크가 된다.
  • 블록 장치 / 문자 장치 : 블록 단위로 임의 접근하는 장치(디스크)와 한 글자씩 흘려보내는 장치(키보드·터미널).
  • FIFO(named pipe) : 파일처럼 생긴 단방향 프로세스 간 통신 통로. ls -l에서 p로 보인다.
  • 절대경로 / 상대경로 : /에서 시작하는 완전한 주소와, 현재 위치를 기준으로 한 주소.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

`ls -l` 명령 결과의 맨 앞 식별 문자와 파일 종류의 연결이 옳지 않은 것은?

문제 2

하드링크와 심볼릭링크의 차이에 대한 설명으로 옳은 것은?

문제 3

리눅스 파일시스템에서 inode에 저장되지 않는 정보는?

문제 4

FHS(Filesystem Hierarchy Standard)에 따른 디렉터리 역할로 옳지 않은 것은?

문제 5

`/proc`와 `/sys` 디렉터리에 대한 설명으로 옳은 것은?

문제 6

다음 명령을 순서대로 실행했을 때 마지막 `cat soft.txt`의 결과로 옳은 것은? ``` echo "data" > orig.txt ln orig.txt hard.txt ln -s orig.txt soft.txt rm orig.txt ```

이전설치와 부팅: 전원을 켜는 순간부터Week 1 · Day 3다음 Week 1 종합 복습: 개념을 꿰뚫는 시간Week 1 · Day 5

이 페이지

  • 핵심 정리
  • FHS — 디렉터리 구조의 약속
  • 가상 파일시스템 — /proc와 /sys
  • 파일의 7가지 종류
  • inode — 파일의 진짜 정체
  • 하드링크 vs 심볼릭링크 — 핵심 비교
  • 절대경로와 상대경로
  • 용어
  • 연습 문제