리눅스 독학 방법: 첫 명령부터 서버 운영까지 단계별 로드맵
리눅스는 층을 쌓아 가며 배우는 것이 가장 쉽습니다. 터미널과 파일 시스템을 먼저 익히고, 사용자와 권한, Bash 스크립트, 패키지, 프로세스와 systemd, 그다음 디스크, 로그, 네트워크, SSH, 서버 보안 순으로 진행합니다. 각 단계마다 자신의 가상 머신이나 저렴한 VPS에서 실습해야 하며, 최종 목표는 직접 구축하고 보호한 서버에서 서비스가 돌아가는 상태입니다.
리눅스를 처음부터 배우는 것은 생각보다 어렵지 않습니다. 올바른 순서로 가면서 곧바로 실습하면 됩니다. 초보자가 가장 많이 하는 실수는 명령어를 직접 입력하지 않고 읽기만 하는 것, 또는 프로세스와 권한을 이해하지 못한 채 Docker와 Kubernetes로 건너뛰는 것입니다. 아래는 아홉 단계 계획입니다. 무엇을 배울지, 무엇을 실습할지, 단계를 통과했는지 어떻게 알 수 있는지를 담고 있습니다.
기간은 하루 한 시간씩 두 달에서 네 달입니다. 하지만 사람마다 속도가 다릅니다. 중요한 것은 빠르기가 아니라, 각 단계가 끝난 뒤 직접 무언가를 해낼 수 있는 것입니다.
0단계. 실습 환경 준비
리눅스는 리눅스에서 배웁니다. 간단한 것부터 현실적인 것까지 선택지는 다음과 같습니다:
- Windows의 WSL2 — 몇 분이면 Ubuntu 터미널이 생깁니다. 명령어와 스크립트에는 좋지만, systemd와 네트워크는 서버와 같이 동작하지 않습니다.
- 가상 머신(VirtualBox, VMware, Mac의 UTM)에 서버용 Ubuntu나 Debian. 마음껏 망가뜨리고 스냅숏으로 되돌릴 수 있습니다.
- 저렴한 VPS 클라우드 업체에서 빌린 서버. 공인 IP가 있는 진짜 서버는 네트워크와 보안 단계에 가장 좋은 실습장입니다.
시작 배포판은 Ubuntu Server 또는 Debian입니다. 관련 문서와 답변이 가장 많기 때문입니다. 그래픽 환경은 필요 없습니다. 서버는 터미널로 관리하므로 첫날부터 익숙해지세요.
1단계. 터미널과 파일 시스템
목표: 마우스 없이 시스템을 자신 있게 돌아다니고 파일을 다루기.
- 탐색:
pwd,ls -la,cd, 절대 경로와 상대 경로,~,.,... - 파일:
cp,mv,rm,mkdir -p,touch, 보기용cat,less,head,tail -f. - 검색:
find,which,locate. - 도움말:
man,--help. man을 읽는 능력은 평생 쓰입니다. - 디렉터리 구조:
/etc,/var/log,/home,/usr,/proc,/dev에 무엇이 있는지, 마운트와 inode가 무엇인지. - 터미널 편집기: 처음에는
nano, 그다음 거의 모든 서버에 있는vim의 기본 명령.
실습: /etc에서 지난 일주일 사이에 바뀐 모든 .conf 파일을 찾으세요(find /etc -name "*.conf" -mtime -7). /etc/os-release를 열어 시스템 버전을 확인하세요. /var/log에서 시스템이 무엇을 기록하는지 보세요.
2단계. 사용자, 그룹, 권한
권한은 리눅스 보안의 기반이며, «Permission denied» 오류의 절반이 여기서 나옵니다.
ls -l출력 읽기: 종류, 권한, 소유자, 그룹.- 기호 방식과 숫자 방식의
chmod,chown,umask. - 특수 비트: SUID, SGID, sticky bit — 그리고 왜
/tmp는 모두에게 쓰기 가능하지만 남의 파일은 지울 수 없는지. - 사용자와 그룹:
useradd,usermod -aG,passwd, 파일/etc/passwd,/etc/shadow,/etc/group. sudo, sudoers 규칙,visudo로 편집.
실습: 사용자 두 명과 공용 프로젝트 디렉터리를 만드세요. 두 사람은 파일을 만들 수 있지만, 나머지는 아무것도 볼 수 없어야 합니다. 힌트: 그룹, chmod 2770, 그룹 상속을 위한 SGID.
3단계. Bash와 텍스트 도구
관리 작업은 대부분 텍스트 처리입니다. 로그, 설정 파일, 명령 출력을 다룹니다. 이 단계에서 터미널은 명령의 나열에서 도구로 바뀝니다.
- 리디렉션과 파이프:
>,>>,2>&1,|,xargs. - 필터:
grep(정규 표현식과 함께),sort,uniq -c,wc,cut,sed,awk. - 터미널에서 JSON과 HTTP:
curl과jq. - 스크립트: shebang, 변수, 따옴표,
if와[[ ]], 반복문, 함수, 종료 코드,set -euo pipefail.
실습: 웹 서버 로그에서 요청을 가장 많이 보낸 IP 주소 열 개를 한 줄로 세어 보세요:
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head
그다음 디렉터리를 날짜가 붙은 아카이브로 묶고, 7일이 지난 아카이브를 지우고, 오류가 나면 0이 아닌 코드를 반환하는 백업 스크립트를 작성하세요.
4단계. 패키지, 환경, 스케줄러
- 패키지 관리자:
apt update,apt install,apt remove,apt search,dpkg -l. RHEL 계열에서는dnf. 저장소가 무엇이고 서명 키가 왜 필요한지 이해하세요. - 환경 변수:
env,export,PATH, 파일~/.bashrc,~/.profile,/etc/environment— 각 파일이 언제 읽히는지. - 스케줄:
crontab -e, 다섯 필드 문법, 그리고 왜 터미널에서는 되는 명령이 cron에서는 «안 되는지»(다른 환경과PATH).
실습: 저장소에서 nginx를 설치하고, 스크립트 디렉터리를 PATH에 추가한 뒤, 3단계의 백업 스크립트를 매일 밤 cron으로 실행하고 출력을 로그 파일에 남기세요.
5단계. 프로세스와 systemd
이 단계부터 시스템에서 실제로 무슨 일이 일어나는지 이해하기 시작합니다.
- 프로세스:
ps aux,top/htop, PID와 PPID, 상태, 우선순위(nice), 시그널과kill. - 부하: load average, 메모리와 swap(
free -h), «D 상태의 프로세스»가 무엇인지. - 디버깅:
lsof— 프로세스가 연 파일과 포트;strace— 프로세스가 어떤 시스템 호출을 하고 어디서 멈췄는지. - systemd: 유닛,
systemctl status/start/enable,Restart=on-failure가 있는 나만의 unit 파일, cron 대신 타이머. - 로그:
journalctl -u,-f,-b,-p err, 로테이션, rsyslog; sysstat으로 성능 통계(sar,iostat).
실습: 작은 애플리케이션(최소한 python3 -m http.server)을 별도 사용자의 systemd 서비스로 만들고, kill -9로 죽인 뒤 systemd가 다시 살리는지 확인하세요. 로그에서 재시작 기록을 찾으세요.
6단계. 디스크, LVM, RAID
- 장치와 파티션:
lsblk,blkid,fdisk또는parted, 파일 시스템 ext4와 XFS,mkfs. - 마운트:
mount, UUID를 쓰는/etc/fstab,mount -a로 확인. - 공간:
df -h,df -i,du -sh, 디스크를 채우는 것 찾기. - LVM: 물리 볼륨, 볼륨 그룹, 논리 볼륨, 중단 없이 파티션 확장.
mdadm으로 소프트웨어 RAID — 0, 1, 5, 10 수준의 이해, 그리고 RAID가 백업이 아니라는 사실.
실습: 가상 머신에 디스크 두 개를 추가하고, 그 위에 LVM을 만들고, 볼륨을 생성해 fstab으로 마운트한 뒤 lvextend -r로 키워 보세요.
7단계. 네트워크
- 진단에 필요한 수준의 TCP/IP 모델: IP, 마스크, 게이트웨이, 포트, TCP와 UDP.
- 명령:
ip a,ip r,ss -tlnp,ping,traceroute/mtr,curl -v,nc. - DNS: 이름 해석 원리,
/etc/hosts,/etc/resolv.conf,dig,resolvectl. - 배포판의 네트워크 설정(Ubuntu의 netplan, 다른 배포판의 NetworkManager).
- 패킷 캡처: 다른 방법이 모두 실패했을 때
tcpdump.
실습: 서버에서 열린 포트마다 어떤 프로세스가 듣고 있는지 알아내세요. 127.0.0.1에서 듣는 서비스가 왜 밖에서 안 되는지 이해하고 고치세요.
8단계. 원격 작업: SSH와 파일 전송
- SSH: 키(
ssh-keygen -t ed25519,ssh-copy-id),~/.ssh/config파일,ssh-agent, 포트 포워딩(ssh -L),ProxyJump로 배스천 통과. - 복사:
scp와rsync -avz --delete— 동기화에 rsync가 더 나은 이유. - 네트워크 파일 시스템: 리눅스 서버 간 NFS, Windows와 공유할 때 SMB(Samba).
실습: VPS에 키로만 로그인하도록 설정하고, ~/.ssh/config에 짧은 이름으로 등록한 뒤, 디렉터리를 매일 rsync로 서버에 동기화하세요.
9단계. 서버 보안
- 방화벽: «허용되지 않은 것은 모두 차단» 원칙; 간단한 경우
ufw, 내부 동작을 이해하기 위한nftables. fail2ban: 여러 번 로그인에 실패한 IP 차단;fail2ban-client status sshd로 확인.- sshd 설정: 비밀번호와 root 로그인 차단.
- 보안 업데이트와 자동 설치(Debian과 Ubuntu의 unattended-upgrades).
- GPG: 패키지와 파일의 서명 검증, 백업 암호화.
실습: 방화벽에서 22, 80, 443번만 열고, fail2ban을 켠 뒤 하루 뒤 상태를 보고 얼마나 많은 주소가 이미 차단되었는지 확인하세요.
최종 프로젝트: 서버 전체를 직접 구축하기
리눅스를 정말 배웠는지 확인하는 가장 좋은 방법은 힌트 없이 서버를 처음부터 구축하는 것입니다:
- 새 VPS, sudo 권한이 있는 나만의 사용자, SSH 키 로그인, 비밀번호와 root 차단.
- 방화벽과 fail2ban, 자동 보안 업데이트.
- 웹 서버와 애플리케이션을 자동 재시작 기능이 있는 systemd 서비스로.
- 데이터용 별도 디스크 또는 볼륨, fstab으로 마운트.
- 다른 머신으로 rsync를 이용한 정기 백업(cron 또는 systemd 타이머), 로그와 복원 검증 포함.
- 짧은 안내서: 이 모든 것을 다시 세우는 방법.
이 목록을 힌트 없이 완수하고 각 단계를 설명할 수 있다면, 시스템 관리자나 DevOps 엔지니어로 일할 기초가 갖춰진 것입니다. 그다음은 컨테이너, 구성 자동화, 모니터링입니다.
더 효율적으로 배우는 방법
- 명령은 직접 입력하세요. 글에서 복사한 것은 기억에 남지 않습니다. 입력하고 실수하는 과정이 기억에 남습니다.
- 망가뜨리고 고치세요. 가상 머신에서 fstab이나
~/.ssh권한을 망가뜨리고 시스템을 복구해 보세요. 이런 경험은 면접에서 높이 평가됩니다. - 메모를 남기세요. 자신이 쓴 명령과 예제의 기록은 남의 치트시트보다 훨씬 유용합니다.
- 로그를 읽으세요. 리눅스의 거의 모든 문제는 로그가 설명해 줍니다. 무엇을 보든 로그를 먼저 확인하는 습관을 들이세요.
마무리
리눅스를 처음부터 배우는 방법은 층을 쌓아 가는 것입니다. 터미널과 파일, 권한, Bash, 패키지, 프로세스와 systemd, 디스크, 네트워크, SSH, 보안 순서로, 각 단계에서 자신의 환경으로 실용적인 과제를 해결하세요. 최종 목표는 직접 서버를 세우고 보호해서 서비스를 돌리는 것입니다. 우리 리눅스 강의도 입문 강의부터 최종 프로젝트까지 바로 이 경로를 따릅니다.
자주 묻는 질문
리눅스를 처음부터 배우는 데 얼마나 걸리나요?
하루 한 시간 정도 실습하면 대개 몇 달 안에 서버를 다룰 수 있는 기초가 생깁니다. 자신감은 실제 과제에서 옵니다. 그래서 총 시간보다 꾸준함이 더 중요합니다.
리눅스를 배우려면 프로그래밍을 알아야 하나요?
아니요, 몰라도 시작할 수 있습니다. 다만 Bash 스크립트 단계에 이르면 사실상 프로그래밍을 하게 되며, 그 기술은 자동화에서 계속 쓰입니다.
Windows에서도 리눅스를 배울 수 있나요?
네, WSL2나 가상 머신으로 가능합니다. systemd, 디스크, 네트워크 주제는 완전한 가상 머신이나 VPS가 더 적합합니다.
리눅스를 컴퓨터의 주력 운영체제로 써야 하나요?
도움이 되지만 필수는 아닙니다. 서버 관리에는 그래픽 데스크톱보다 서버 리눅스를 터미널로 다루는 능력이 더 중요합니다.
초보자에게 어떤 배포판을 추천하나요?
Ubuntu Server나 Debian입니다. 문서가 많고, 익힌 기술이 다른 배포판에도 잘 옮겨 갑니다. RHEL 계열과의 주된 차이는 패키지 관리자 dnf입니다.
이 주제는 “Linux: с нуля до уверенного администрирования” 강의에서 실습과 함께 자세히 다룹니다.
- Linux: с нуля до уверенного администрирования
- Финал: собираем защищённый и автоматизированный сервер целиком