콘텐츠로 이동
Study Note서버 관리 일반

0. 시작하기 전에

검색으로 나오는 리눅스 글의 절반은 10년 전 명령이다 — 기준 시점을 먼저 못 박는다

이 장에서 처음 나오는 말5개
배포판Distribution
리눅스 커널에 패키지 관리자·기본 도구·설정 정책을 얹어 하나로 묶은 제품. 명령의 이름은 같아도 기본값과 설정 파일 위치가 배포판마다 다르다 — 그래서 "리눅스"가 아니라 "Ubuntu 24.04"를 기준으로 잡는다.
LTSLong Term Support
장기 지원 버전. Ubuntu는 짝수 해 4월에 LTS를 내고 5년(Ubuntu Pro로 10년) 동안 보안 패치를 준다. 서버는 사실상 LTS만 쓴다.
systemd
지금 리눅스의 init 시스템이자 서비스 관리자. 부팅·서비스·로그·시간·네트워크·로그인 세션까지 관리한다. systemctl·journalctl이 그 얼굴이다(5~6장).
셸Shell
명령을 받아 해석해 실행하는 프로그램. Ubuntu의 로그인 셸 기본값은 bash이고, 스크립트에서 /bin/sh는 dash로 연결돼 있다 — bash 전용 문법이 스크립트에서 깨지는 흔한 원인이다.
루트root
UID 0, 모든 권한을 가진 계정. Ubuntu는 root 로그인을 막아 두고 sudo로 잠깐 빌려 쓰게 한다 — 누가 무엇을 했는지 기록이 남는다는 점이 더 중요한 차이다(10~11장).
  • 사내망 안의 Ubuntu 서버를 맡게 된 사람 — 개발자든 인프라 담당이든
  • 명령을 몇 개 알긴 하는데, 문제가 났을 때 어느 순서로 쳐야 하는지 모르는 사람
  • 사내 프록시·사설 CA 환경에서 “왜 이 도구만 안 되지”에 반복해서 부딪히는 사람

전제하는 것: 터미널로 SSH 접속은 해 봤다, 파일 경로와 디렉터리 개념을 안다. 전제하지 않는 것: 리눅스 관리 경험, 셸 스크립트, 네트워크 이론.

다룬다

OS · 커널 · 하드웨어 스펙 확인. 디스크 · 파일시스템 · 프로세스 · 자원 사용량. systemd 서비스 관리와 journalctl 로그 읽기. 네트워크 상태 확인과 층별 연결 진단. 사내 프록시 · 사설 CA 인증서 설정 — 프로그램별로. 사용자 · 권한 · SSH, 접속 이력과 명령 감사. apt 패키지 · 업데이트 · ufw 방화벽. 증상에서 출발하는 진단 플레이북.

다루지 않는다

셸 스크립트 작성법 (읽을 만큼만). 서버 애플리케이션 설치·설정 (nginx · DB 등). 쿠버네티스 · 컨테이너 오케스트레이션 (→ CKA 덱). Ansible · Terraform 등 구성 관리 도구. 커널 튜닝 · 성능 벤치마킹 상세. SELinux (Ubuntu는 AppArmor를 쓴다 — 이름만). 데스크톱 환경 · GUI.

서버에서 실수는 대부분 바꾸는 명령에서 난다. 그래서 이 덱은 읽는 명령을 훨씬 많이 다룬다.

성격예태도
읽기 — 상태를 보기만 한다ip a · ss -tulpn · systemctl status · journalctl · lsblk · ps마음껏 친다. 진단은 여기서 다 끝난다
쓰기 — 상태를 바꾼다systemctl restart · netplan apply · ufw enable · apt upgrade무엇이 바뀌는지 말할 수 있을 때만. 되돌릴 방법을 먼저 정한다
쓰기 — 자기 접속을 끊을 수 있다ufw enable · netplan apply · systemctl restart ssh · reboot원격이면 콘솔 접근 수단을 확보하고 친다

“안 돼요”라는 신고는 정보가 없다. 층을 세우고 어디까지 성공하는지 확인하면 정보가 생긴다. 네트워크의 층이 가장 자주 쓰이지만(8장), 같은 사고방식이 부팅에도(펌웨어 → GRUB → 커널 → initramfs → systemd), 서비스에도(프로세스 살아 있나 → 포트 열었나 → 응답하나) 그대로 적용된다.

리눅스에서 “설정을 본다”는 결국 파일을 읽는 일이다. 디렉터리의 역할만 알면 절반은 찾아진다.

/etc와 /proc·/sys가 실행 중인 시스템으로 들어가고, 시스템에서 /var와 /run이 나오는 디렉터리 역할 지도

free도 top도 lscpu도 결국 /proc 아래를 읽어 예쁘게 보여주는 프로그램이다 — 명령이 없는 환경(최소 컨테이너 등)에서는 cat /proc/meminfo로 직접 볼 수 있다.

Ubuntu 24.04 LTS (코드명 noble) 기준이다. 24.04는 2024년 4월에 나와 2029년까지 표준 보안 지원(Ubuntu Pro 적용 시 2034년까지)을 받는다.

항목24.04 LTS의 값확인 방법
커널GA는 6.8. 포인트 릴리스(24.04.x)에서 HWE 커널로 더 올라간다uname -r
init · 서비스systemd 255systemctl --version
패키지apt 2.7 · deb822 형식 .sources 도입apt --version
네트워크 설정netplan → 서버는 systemd-networkd, 데스크톱은 NetworkManagernetplan status
DNSsystemd-resolved (스텁 리졸버 127.0.0.53)resolvectl status
방화벽ufw (내부는 nftables)ufw status
강제 접근 제어AppArmor (SELinux 아님)aa-status

검색 결과 상단에 아직도 많이 남아 있는 옛 명령들이다. 왼쪽이 보이면 그 글 전체가 낡았다고 의심한다.

옛 명령 (net-tools 시대)지금 (iproute2 · systemd)비고
ifconfigip addr · ip -br anet-tools는 기본 설치조차 안 된다
route -nip route
netstat -tulpnss -tulpnss가 훨씬 빠르다
arp -aip neigh
service nginx restartsystemctl restart nginxservice는 지금도 동작하는 얇은 래퍼다
/etc/init.d/…systemctl
/etc/network/interfaces/etc/netplan/*.yaml18.04부터 netplan
/etc/resolv.conf 직접 편집netplan 또는 resolvectl그 파일은 자동 생성물이라 덮어써진다
iptables -Lnft list ruleset · ufw statusiptables 명령은 nftables로 번역돼 실행된다
apt-key add/etc/apt/keyrings/ + signed-by=apt-key는 제거됐다(12장)
  • 대상은 사내망 Ubuntu 24.04 서버를 맡은 사람, 관점은 “명령어 사전”이 아니라 상황
  • 멘탈 모델 셋: 읽기 명령 먼저 / 층으로 가르기 / 상태는 전부 파일
  • 기준은 Ubuntu 24.04 LTS · systemd 255 · netplan · systemd-resolved · ufw · AppArmor
  • ifconfig · netstat · /etc/network/interfaces가 보이면 낡은 글이다