Step 21. 패키지 관리 — 리눅스의 앱스토어, apt
Level 0 — 컴퓨터 조작과 구조의 이해 | 난이도 ★★☆☆☆ | 예상 소요 시간 2시간
전제: Step 20 완료. 가상머신(또는 WSL) 속 우분투 터미널에서 진행합니다. 인터넷 연결이 필요합니다(VM의 네트워크가 켜져 있어야 합니다).
- 준비물: 우분투 터미널, 인터넷 연결.
- 주의: 오늘은 프로그램을 실제로 설치하고 삭제합니다 — 시스템을 바꾸는 명령이 처음 등장합니다. 반드시 실습용 우분투(가상머신·WSL)에서 진행하세요.
- 주의:
sudo가 처음 등장합니다. 비밀번호를 쳐도 화면에 별표조차 안 뜨는데, 고장이 아니라 보안 설계입니다(2-4절에서 설명).
윈도우에서 프로그램을 설치하는 방식을 떠올려 보세요. 검색 → 사이트 찾기 → 다운로드 → 설치 파일 실행 → 다음 다음 다음. 그리고 Step 16에서 배운 위험, 가짜 사이트와 재포장 설치 파일이 따라다닙니다. 리눅스는 완전히 다른 방식을 씁니다 — 공식 장터가 하나 있고, 명령 한 줄로 받습니다. 오늘 그 방식의 주인공, apt를 배웁니다.
이 챕터는 조회 명령(apt list, apt show 등)은 우분투 24.04에서 직접 실행해 검증했고, 시스템을 바꾸는 명령(설치·삭제)의 출력은 "출력 예시"로 표기했습니다. 예시의 숫자·버전은 여러분 환경과 다를 수 있습니다.
1. 학습 목표
이 챕터를 끝내면 다음을 할 수 있습니다:
- 패키지(package)·저장소(repository)·의존성(dependency) 세 개념을 설명한다
apt list·apt search·apt show로 설치된 것과 설치할 것을 조회한다sudo apt update가 "설치"가 아니라 "목록 갱신"임을 설명하고, 설치 전 습관으로 쓴다sudo apt install/remove로 프로그램을 설치·삭제하고, 설치 화면에서 의존성을 읽는다sudo의 의미와, 비밀번호가 화면에 안 보이는 이유를 설명한다
2. 배경 지식 — 오늘의 도구와 개념
오늘의 도구 한눈에 보기
| 구분 | 내용 |
|---|---|
| 언어·환경 | 우분투 터미널(배시 셸), 인터넷 연결 필요 |
| 오늘의 명령어 | apt list --installed(설치 목록), apt search·apt show(찾기·상세), sudo apt update(목록 갱신), sudo apt install / remove(설치·삭제), df -h(디스크 여유) |
| 필요한 개념 | 패키지, 저장소, 의존성, sudo와 root |
2-1. 패키지 — 프로그램의 포장 단위
패키지(package)는 "프로그램 + 설치 정보 + 부속 목록"을 하나로 포장한 것입니다. 택배 상자를 생각하세요. 물건(프로그램), 송장(버전·제작자 정보), 그리고 "이 물건이 작동하려면 저것도 필요합니다"라는 안내서까지 들어 있습니다.
윈도우의 설치 파일(.exe, .msi)과 역할은 비슷하지만, 리눅스의 패키지는 "어디서 받았는가"가 다릅니다. 다음 절의 저장소가 그 차이의 핵심입니다.
2-2. 저장소 — 공식 장터
저장소(repository)는 패키지들이 진열된 공식 서버입니다. 우분투가 운영하는 장터에 수만 개의 패키지가 있고, 각 패키지는 우분투 팀이 검수했습니다. 여러분의 컴퓨터에는 이 장터의 목록 사본이 저장되어 있고, apt는 그 목록을 보고 일합니다.
보안 관점에서 이것이 얼마나 큰 차이인가: 윈도우 방식은 "아무 가게나 돌아다니며 물건을 사는" 것 — 가짜 가게의 위험이 늘 따라다닙니다. 장터 방식은 "관리되는 공식 시장에서만 사는" 것 — 출처가 보증됩니다. 물론 장터 자체를 노리는 공격(저장소 오염, 가짜 패키지 올리기)도 존재하니 "공식 장터 = 100% 안전"은 아닙니다. 하지만 기본값이 훨씬 안전한 세계입니다. 이 주제는 7절에서 한 번 더 다룹니다.
2-3. 의존성 — 부속품의 연쇄
어떤 프로그램은 혼자 작동하지 않습니다. 그림 프로그램은 "그림 파일을 여는 부품"이 필요하고, 그 부품은 또 다른 부품이 필요합니다. 이 관계를 의존성(dependency)이라 합니다.
윈도우에서 "이 프로그램은 .NET이 필요합니다" 같은 오류를 본 적 있나요? 리눅스의 apt는 이 문제를 자동으로 풉니다. 패키지의 부속품 목록을 읽고, 없는 것을 같이 장바구니에 담아 한 번에 설치합니다. 3-4절에서 그 과정을 눈으로 보게 됩니다.
2-4. sudo — 일시적 관리자 카드
sudo는 "superuser do" — "이 명령만 관리자로 실행해 줘"라는 뜻입니다. Step 12에서 관리자 파워쉘을 통째로 열었던 것과 달리, 리눅스는 명령 하나하나에 관리자 카드를 찍습니다. 여기서 관리자란 리눅스의 최고 관리자 계정 root를 말합니다(Step 24에서 자세히 다룹니다).
설치가 왜 관리자 권한이 필요할까요? 프로그램은 시스템 공용 구역(/usr 등)에 들어가니까요. 내 집(홈 디렉토리)이 아닌 공용 공간을 바꾸는 일은 관리자만 가능합니다. 이 구조 덕분에 일반 사용자는 실수로든 악의로든 시스템을 함부로 못 바꿉니다 — 권한의 분리, 보안의 기본 설계입니다.
비밀번호가 안 보이는 이유: sudo가 비밀번호를 물을 때 화면에 아무 표시도 없습니다. 별표조차 없습니다. 옆에서 보는 사람에게 글자 수조차 숨기려는, 반세기 된 리눅스의 보안 전통입니다. 입력은 되고 있습니다 — 치고 엔터만 누르면 됩니다.
3. 따라 하기
3-1. 지금 뭐가 깔려 있나 — apt list
설치를 배우기 전에, 지금 내 컴퓨터에 뭐가 있는지부터 봅시다. 조회 전용 명령이라 sudo도 필요 없습니다:
apt list --installed 2>/dev/null | head -8
Listing...
adduser/noble,now 3.137ubuntu1 all [installed,automatic]
adwaita-icon-theme/noble,now 46.0-1 all [installed,automatic]
apparmor/now 4.0.1really4.0.1-0ubuntu0.24.04.5 amd64 [installed,upgradable to: 4.0.1really4.0.1-0ubuntu0.24.04.7]
apport-core-dump-handler/noble-security,now 2.28.1-0ubuntu3.8 all [installed,upgradable to: 2.28.3-0ubuntu0.1]
apport-symptoms/noble,now 0.25 all [installed,automatic]
apport/noble-security,now 2.28.1-0ubuntu3.8 all [installed,upgradable to: 2.28.3-0ubuntu0.1]
appstream/noble,now 1.0.2-1build6 amd64 [installed,automatic]
(2026-09-09 우분투 24.04 실측. 목록과 버전은 여러분 환경과 다릅니다.)
출력 읽는 법: 한 줄이 한 패키지입니다. 이름/배포판 버전 아키텍처 [상태] 순서입니다. [installed,automatic]은 "나는 누군가의 부속품으로 자동 설치됐다"는 뜻 — 2-3절의 의존성이 남긴 흔적입니다. [upgradable to: ...]는 "새 버전이 장터에 올라와 있다"는 신호입니다.
전체가 몇 개인지 세어 봅시다:
apt list --installed 2>/dev/null | wc -l
652
(2026-09-09 실측. 여러분 환경은 다릅니다.)
방금 설치한 것 하나 없는 새 우분투에도 수백 개의 패키지가 이미 들어 있습니다. 운영체제 자체가 패키지들의 조합이기 때문입니다. 참고로 끝의 wc -l은 "줄 수 세기" 명령이고, 2>/dev/null은 apt가 띄우는 안내 문구(경고성 출력)를 숨기는 장치입니다.
3-2. 검색과 상세 정보 — apt search / apt show
설치 전에 장터에 뭐가 있는지 봅시다. 오늘의 설치 대상은 htop — Step 13에서 명령으로 추적하던 프로세스 세계를 멋진 실시간 화면으로 보여 주는 인기 도구입니다:
apt search --names-only "^htop$"
Sorting...
Full Text Search...
htop/noble 3.3.0-4build1 amd64
interactive processes viewer
(2026-09-09 실측.)
읽는 법: 장터에 htop이 있고, 한 줄 설명은 "interactive processes viewer(대화형 프로세스 보기 도구)". --names-only "^htop$"은 "이름이 정확히 htop인 것만" 찾는 옵션입니다. 생략하고 apt search htop만 쳐도 되지만 이름에 htop이 들어가는 수십 개가 나옵니다.
이름을 알았으니 상세 정보를 봅시다:
apt show htop
Package: htop
Version: 3.3.0-4build1
Priority: optional
Section: utils
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Daniel Lange <DLange@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 434 kB
Depends: libc6 (>= 2.38), libncursesw6 (>= 6), libnl-3-200 (>= 3.2.7), libnl-genl-3-200 (>= 3.2.7), libtinfo6 (>= 6)
Suggests: lm-sensors, lsof, strace
Homepage: https://htop.dev/
(2026-09-09 실측.)
여기서 잠깐 — Depends 줄을 보세요. "htop이 작동하려면 libc6, libncursesw6, libnl-3-200 … 이 필요합니다"라는 부속품 목록입니다. 이것이 2-1절의 "택배 상자 속 안내서"이고, 2-3절 의존성의 실물입니다. 설치할 때 apt는 이 줄을 읽고 빠진 부속품을 자동으로 같이 담습니다. Origin: Ubuntu는 "우분투 공식 장터 상품"이라는 뜻입니다.
3-3. 장터 목록 갱신 — apt update
설치 전 국민 루틴입니다:
sudo apt update
Hit:1 http://kr.archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease
...
Reading package lists... Done
(출력 예시 — 목록 파일을 갱신하는 명령이라 본 챕터 실측 환경에서는 실행하지 않고, 표준적인 출력 형태를 보여 드립니다. 서버 주소는 환경마다 다릅니다.)
출력 읽는 법: 각 줄이 저장소(장터) 서버와의 대화입니다. "목록을 새로 받아왔다"는 뜻이지, 무언가를 설치한 게 아닙니다. 가게의 오늘 전단지를 받아 온 것뿐입니다. 처음 쓰는 sudo라면 비밀번호를 묻는데, 화면에 아무것도 안 뜨는 게 정상입니다(2-4절).
왜 먼저 하는가: 전단지가 오래되면 "그런 상품 없습니다"라고 하거나 낡은 버전을 받게 됩니다. 그래서 sudo apt update && sudo apt install 프로그램처럼 세트로 외워질 정도로 설치 전 update는 리눅스 사용자의 국민 루틴입니다.
3-4. 설치 — 의존성의 실체 관찰
sudo apt install htop
Reading package lists... Done
Building dependency tree... Done
The following NEW packages will be installed:
htop libncursesw6
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
After this operation, 1500 kB of additional disk space will be used.
Do you want to continue? [Y/n]
(출력 예시 — 설치는 시스템을 바꾸는 명령이라 본 챕터에서는 실측하지 않았습니다. 함께 깔리는 부속품의 종류와 개수는 환경마다 다릅니다.)
출력을 자세히 읽어 보세요:
Building dependency tree— 의존성 나무를 계산 중. 2-3절의 그것입니다NEW packages ... htop libncursesw6— htop 하나를 부탁했는데 부속품까지 같이 담았습니다. 3-2절의Depends줄에서 본 libncursesw6(화면 그리기 부품)입니다. 의존성 자동 해결의 실물!Do you want to continue?— 마지막 확인. 무엇이 얼마나 설치되는지 보여 주고 묻습니다
Y(또는 그냥 엔터)를 누르면 다운로드와 설치가 자동으로 진행됩니다.
왜 이게 보안과 관련되는가: "뭐가 깔리는지 보여 주고 확인받는" 이 화면을 읽는 습관이 중요합니다. 부탁한 것 외에 이상한 게 끼어 있으면 여기서 걸러야 하니까요. 그리고 apt는 패키지가 진짜인지(서명 검증)를 뒤에서 자동으로 확인해 줍니다 — Step 9의 "서명" 개념이 여기서도 일하고 있습니다.
3-5. sudo를 빼먹으면 — 친절한 오류
궁금하면 해 보세요. 실습용 우분투니까요:
apt install htop
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
(출력 예시.)
오류 메시지의 교훈: "Permission denied(권한 거부)", 그리고 "are you root?(당신 뿌리 사용자인가요?)" — 리눅스가 정확히 무엇이 문제인지 알려 줍니다. 이 오류를 만나면 당황하지 말고 읽으세요. 리눅스의 오류 메시지는 대부분 답을 품고 있습니다. "Permission denied가 나오면 권한 문제구나 → sudo를 빼먹었나?" 이 연상 회로가 생기면 리눅스 벽의 절반이 사라집니다.
3-6. 실행 — 프로세스가 한눈에
htop
화면 가득 프로세스 목록이 실시간으로 움직입니다. 위쪽에는 CPU와 메모리 사용량 그래프. Step 13에서 번호로 추적하던 세계가 살아있는 대시보드로 보입니다.
둘러보기: ↑↓로 프로세스를 고르고, F6으로 정렬 기준을 바꿔 보세요(CPU 많이 먹는 순 등). 종료는 q입니다.
왜 하는가: 실무자들은 서버에 접속하면 제일 먼저 htop을 켜는 경우가 많습니다 — "지금 이 컴퓨터가 뭘 하고 있나"의 한눈 요약이니까요. 오늘 설치한 이 도구는 앞으로 랩 생활 내내 쓰게 될 겁니다.
3-7. 삭제와 디스크 확인
⚠️
remove는 프로그램을 시스템에서 지우는 명령입니다. 지울 대상의 이름을 정확히 확인하고 실행하세요. 오늘은 방금 설치한 실습 대상(htop)만 지웁니다.
sudo apt remove htop
(출력 예시 — 설치와 거울처럼 반대로 진행되며, 확인 질문 뒤에 htop이 지워집니다. 지운 뒤 htop을 쳐 보면 "command not found"가 뜨며 삭제를 확인할 수 있습니다.)
참고: remove는 프로그램만 지우고 설정 파일은 남기고, purge는 설정까지 지웁니다. 지금은 "두 단계가 있다" 정도만 기억하세요.
설치와 삭제가 디스크에 미치는 영향은 이렇게 봅니다:
df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/sdd 1007G 2.6G 954G 1% /
(2026-09-09 실측. 용량은 환경마다 완전히 다릅니다.)
읽는 법: df는 디스크 여유를 보는 명령, -h는 "사람이 읽기 좋은 단위로"라는 옵션입니다. Size(전체), Used(사용 중), Avail(남은 것), Use%(사용률) 순입니다. 가상머신의 디스크가 차기 시작하면 설치 오류로 이어지므로, 이 명령은 벽 5에서 다시 만납니다.
예측해 보기: 방금 지운 htop을 다시 설치하면 처음보다 빠를까요, 느릴까요? (정답: 대체로 빠릅니다. 받아 둔 패키지 파일이 컴퓨터에 임시 저장(캐시)되어 있어 다시 안 받을 수 있기 때문입니다. 직접 설치해 보고 체감해 보세요. htop은 쓸모가 많으니 이번엔 설치한 채로 두세요.)
4. 미션과 연습문제
미션 — 내 도구 상자 채우기
보안 공부에 유용한 기본 도구 세 개를 스스로 설치해 봅시다:
apt search --names-only "^tree$"처럼 tree(디렉토리를 나무 그림으로), curl(인터넷과 대화하는 만능 도구), git(버전 관리 도구)이 장터에 있는지 먼저 확인하세요- 세 개를 한 번에 설치하세요:
sudo apt install tree curl git(한 줄에 여러 개 가능합니다) - 각각 실행해 보세요:
tree ~(내 홈의 나무 그림),curl --version,git --version apt list --installed 2>/dev/null | grep tree처럼 설치 목록에서 세 도구가 등록됐는지 확인하세요
답은 여기 쓰지 않습니다 — 5절에서 검증합니다.
연습문제
문제 1. apt update와 apt upgrade의 차이를 "장터 전단지" 비유로 설명해 보세요. 왜 update가 항상 먼저일까요?
문제 2. sudo apt install htop의 출력에 htop 외에 libncursesw6이 함께 설치된다고 나왔습니다. 이것은 무엇이며, apt는 그 사실을 어디서 알았을까요?
문제 3. 프로그램 설치에 왜 sudo가 필요할까요? "리눅스의 어떤 구조" 덕분에 일반 사용자가 시스템을 함부로 못 바꾸는지 설명해 보세요.
문제 4. 저장소(공식 장터) 방식이 다운로드 사이트 방식보다 안전한 이유를 말하고, 그럼에도 남는 위험 하나를 말해 보세요.
5. 모범 답안과 완료 기준
미션 모범 답안
apt search --names-only "^tree$"
sudo apt update && sudo apt install tree curl git
tree ~
curl --version | head -1
git --version
apt list --installed 2>/dev/null | grep -E "^(tree|curl|git)/"
검증하는 법: 세 명령이 전부 버전 번호나 결과를 출력하면 완료입니다. 참고로 2026-09-09 실측 우분투 24.04에서 curl은 curl 8.5.0, git은 git version 2.43.0이었고, 장터의 tree는 2.1.1-2ubuntu3.24.04.2였습니다 — 여러분 환경의 버전이 조금 달라도 정상입니다. (참고: 실측 환경에는 curl과 git이 이미 깔려 있었습니다. 여러분의 새 우분투에서는 설치 화면이 뜨는 것이 정상입니다.) tree ~의 나무 그림에서 지난 챕터들의 실습 흔적(stream-lab, search-game 같은 폴더)을 찾아보는 것도 좋은 복습입니다.
심화 생각거리: curl과 git은 왜 "보안 도구 상자"의 기본품일까요? curl은 웹 서버와 대화하는 도구 — 웹 공격·분석의 국민 도구로 Level 2에서 본격 등장합니다. git은 코드와 도구를 받아오는 표준 — 보안 도구 대부분이 git으로 배포됩니다.
연습문제 해답
문제 1 해답. update는 "장터의 최신 전단지(패키지 목록)를 받아 오는 것", upgrade는 "그 전단지를 보고 설치된 패키지들을 최신판으로 올리는 것"입니다. 전단지가 오래되면 최신판이 있는지 모르므로 update가 항상 먼저입니다. 그래서 sudo apt update && sudo apt upgrade가 세트이고, 보안 패치도 이 upgrade를 통해 들어옵니다 — 정기적 업데이트가 가장 기본적인 보안 수칙인 이유입니다.
문제 2 해답. htop의 의존성(부속품)입니다 — 화면 그리기 부품이죠. apt는 패키지에 적힌 부속품 목록(apt show htop의 Depends: 줄, 3-2절 실측에서 확인했습니다)을 읽고 알았습니다. 부탁한 것 외에 뭐가 같이 깔리는지 이 화면에서 확인하는 습관이 중요합니다.
문제 3 해답. 프로그램은 시스템 공용 구역(/usr 등)에 설치되는데, 공용 공간을 바꾸는 것은 관리자(root)만 가능하기 때문입니다. 이 덕분에 일반 사용자는 실수로든 악의로든 시스템을 함부로 바꿀 수 없습니다 — 권한의 분리라는 보안의 기본 설계입니다.
문제 4 해답. 장터 방식은 우분투 팀이 검수한 패키지만 진열되고 전송 시 서명 검증까지 자동으로 하므로, 가짜 사이트·재포장 설치 파일이라는 고전적 함정이 구조적으로 줄어듭니다. 남는 위험은 장터 자체를 노리는 공격 — 유명 패키지에 악성 코드를 심는 공급망 공격(supply chain attack) 같은 것입니다. "공식 장터 = 100% 안전"은 아니라는 것, 7절에서 다시 정리합니다.
완료 기준 체크리스트
- [ ] 패키지·저장소·의존성을 설명할 수 있다
- [ ]
apt list로 설치된 패키지를 조회하고 상태 표시([installed,automatic] 등)를 읽을 수 있다 - [ ]
apt show의Depends:줄이 의존성 목록임을 안다 - [ ] apt update가 설치가 아니라 목록 갱신임을 안다
- [ ] sudo의 의미와 비밀번호가 안 보이는 이유를 안다
- [ ] 설치 화면에서 의존성이 함께 깔리는 것을 읽을 수 있다
- [ ] 미션: tree·curl·git을 설치하고 실행·확인했다
6. 흔한 실수와 해결
벽 1. sudo 비밀번호를 쳐도 아무것도 안 나온다
증상: 비밀번호 입력란이 멈춘 것처럼 보입니다.
원인: 고장이 아니라 보안 설계(2-4절)입니다. 입력 중이어도 화면은 묵묵합니다.
해결: 그냥 치고 엔터. 틀리면 다시 물어보니 걱정 없습니다.
벽 2. "패키지를 찾을 수 없다" 오류
증상: E: Unable to locate package ... 류.
원인 후보: ① 이름 오타 ② 장터 목록이 오래됨 ③ 그런 이름의 패키지가 없음.
해결: ① apt search로 정확한 이름을 먼저 찾고 ② sudo apt update를 하고 다시 시도. 이 둘로 대부분 해결됩니다.
벽 3. apt가 잠겼다는 오류
증상: Could not get lock, "다른 프로세스가 사용 중" 류.
원인: 동시에 두 개의 설치 작업이 돌고 있습니다 — 백그라운드 자동 업데이트가 실행 중일 때 흔합니다.
해결: 몇 분 기다렸다가 다시 하면 대부분 풀립니다. 터미널 창 여러 개에서 apt를 동시에 돌리고 있지 않은지도 확인하세요.
벽 4. 인터넷이 안 된다는 오류
증상: 저장소에 연결 못 함, Temporary failure in name resolution 류.
원인: VM의 네트워크 문제. 호스트가 오프라인이거나 VM 네트워크 설정 이슈입니다.
해결: VM 안에서 ping -c 3 8.8.8.8(리눅스의 핑! -c 3은 세 번만)으로 확인하세요. 안 되면 VM 설정의 네트워크가 NAT로 켜져 있는지 확인합니다.
벽 5. 용량 부족 오류
증상: 디스크 공간 부족 메시지.
원인: 가상 디스크가 차기 시작한 것 — 설치가 쌓이면 생깁니다.
해결: 3-7절의 df -h로 확인하고, sudo apt clean(받아 둔 패키지 캐시 청소)으로 여유를 확보하세요. 스냅샷이 너무 많아도 공간을 먹으니 오래된 것은 정리합니다.
7. 정리
오늘의 개념
| 개념 | 한 줄 설명 |
|---|---|
| 패키지(package) | 프로그램+정보+부속 목록의 포장 단위 |
| 저장소(repository) | 검수된 패키지의 공식 장터 |
| 의존성(dependency) | "이것이 돌려면 저것도 필요" — apt가 자동 해결 |
| sudo | 이 명령만 관리자(root)로 — 비밀번호는 안 보이는 게 정상 |
| 캐시 | 받아 둔 패키지 파일의 임시 저장소 — 재설치가 빠른 이유 |
오늘의 명령어
| 명령 | 하는 일 |
|---|---|
apt list --installed |
설치된 패키지 목록 |
apt search / apt show |
찾기 / 상세 정보(의존성 포함) |
sudo apt update |
장터 목록 갱신 (설치 아님!) |
sudo apt install / remove |
설치 / 삭제 (⚠️ 대상 확인 필수) |
df -h |
디스크 여유 확인 |
ping -c 3 주소 |
리눅스의 핑 (네트워크 확인) |
명령어보다 중요한 감각
설치 경로의 안전 — 공식 장터 방식은 가짜 다운로드 사이트라는 고전적 함정을 구조적으로 줄입니다. 그리고 sudo — "권한은 필요한 명령에만"이라는 최소 권한 원칙의 실물 훈련입니다. 앞으로 만날 모든 보안 도구가 이 한 줄(sudo apt install)로 여러분 손에 들어옵니다.
두 가지를 더 기억해 두세요. 첫째, 오늘 배운 apt는 우분투 계열의 것이고 다른 리눅스에는 dnf, pacman 같은 사촌이 있으며, 윈도우의 winget, 언어별 도구(pip, npm)도 전부 같은 발상입니다 — apt 하나를 배우면 전부가 친척으로 보입니다. 둘째, 장터 방식의 유일한 약점은 "장터가 오염되면 모두가 오염된다"는 것입니다. 유명 패키지에 악성 코드를 심어 퍼뜨린 공급망 공격 사건들이 실제로 있었고, 오늘 apt가 조용히 해 준 서명 검증이 바로 그 방어선입니다. "모르는 도구를 만나면 apt search부터, 설치 전에는 update부터, 설치 후에는 실행 확인부터" — 이 세 동작이면 리눅스에서 도구 때문에 막히는 일은 거의 없습니다.
전부 체크되면 Step 21 완료입니다. 사이드바의 체크박스를 눌러 진도를 저장하세요.