- 셸은 명령 해석기다.
- 종류와 설정 파일, 변수 구분이 출제 포인트다.
| 셸 | 특징 |
|---|
| bash | 리눅스 기본, sh 호환 + 확장 |
| csh/tcsh | C 문법 유사, 히스토리 |
| ksh | 콘 셸, 상용 유닉스 다수 |
| zsh | 강력한 자동완성·플러그인 |
- 환경 변수와 셸 변수의 차이가 함정이다.
export로 내보내면 환경 변수(자식 프로세스로 상속), 그냥 대입이면 셸 변수(상속 안 됨).
| 변수 | 의미 |
|---|
PATH | 실행 파일 검색 경로 |
HOME | 홈 디렉터리 |
PS1 | 기본 프롬프트 문자열 |
SHELL | 로그인 셸 경로 |
LANG | 기본 로케일·언어 |
UID | 사용자 ID |
설정 파일 한 줄: /etc/profile(전역·로그인), ~/.bash_profile(개인·로그인 시 1회), ~/.bashrc(개인·셸 열 때마다). alias는 보통 .bashrc에 둔다.
- 기본 권한 rwx(읽기4·쓰기2·실행1)는 기본이고, 특수 권한 3종이 시험 포인트다.
| 특수 권한 | 숫자 | 의미 | 표기 |
|---|
| SetUID | 4000 | 실행 시 소유자 권한 | s (소유자 x 자리) |
| SetGID | 2000 | 실행 시 그룹 권한·디렉터리 그룹 상속 | s (그룹 x 자리) |
| Sticky Bit | 1000 | 소유자만 삭제 가능(공유 디렉터리) | t (기타 x 자리) |
- 대표 예:
/usr/bin/passwd는 SetUID(일반 사용자가 /etc/shadow 수정 가능), /tmp는 Sticky Bit(누구나 쓰지만 자기 것만 삭제).
⚠️ umask 함정: umask는 권한을 빼는 값. 파일 기본 666, 디렉터리 777에서 umask를 뺀다. umask 022 → 파일 644, 디렉터리 755. 파일에 실행권한은 umask로 안 붙는다.
대문자 S/T 주의: 실행 권한(x)이 없는데 SetUID/Sticky가 붙으면 소문자가 아닌 대문자 S/T로 표시된다(권한 충돌 표시).
| 명령 | 역할 |
|---|
fdisk/parted | 파티션 생성·관리 |
mkfs | 파일시스템 생성(포맷) |
mount/umount | 마운트·해제 |
df | 디스크 사용량(파일시스템) |
du | 디렉터리 사용량 |
fsck | 파일시스템 점검·복구 |
/etc/fstab 필드 6개 순서: 장치 · 마운트점 · 파일시스템 · 옵션 · dump · fsck 순서.
- 여기 적힌 항목이 부팅 시 자동 마운트 대상이다.
- RAID 레벨도 정리해 둔다.
| RAID | 특징 | 최소 디스크 |
|---|
| 0 | 스트라이핑, 속도↑, 무중복 | 2 |
| 1 | 미러링, 안정성↑ | 2 |
| 5 | 분산 패리티 1개 | 3 |
| 6 | 분산 패리티 2개 | 4 |
| 1+0 | 미러+스트라이프 | 4 |
LVM 3층 구조: 물리볼륨(PV) → 볼륨그룹(VG) → 논리볼륨(LV). pvcreate → vgcreate → lvcreate 순. 무중단 용량 확장이 최대 장점.
- 프로세스 상태·우선순위·시그널은 시험 범위에 든다.
| 명령 | 역할 |
|---|
ps | 프로세스 스냅샷 |
top | 실시간 모니터링 |
kill/killall | 시그널 전송 |
nice/renice | 우선순위 조정 |
jobs/fg/bg | 작업 제어 |
nohup | 로그아웃 후에도 유지 |
| 번호 | 이름 | 의미 |
|---|
| 1 | SIGHUP | 재시작·설정 재로드 |
| 2 | SIGINT | 인터럽트(Ctrl+C) |
| 9 | SIGKILL | 강제 종료(무시 불가) |
| 15 | SIGTERM | 정상 종료(기본값) |
| 18/19 | SIGCONT/SIGSTOP | 재개/정지 |
⚠️ nice 값 범위: -20(최우선) ~ 19(최저). 값이 작을수록 우선순위 높음. 음수 지정은 root만 가능.
kill 기본값: kill PID는 기본 15(SIGTERM) 전송. 안 죽으면 kill -9. 9번은 프로세스가 무시·차단할 수 없다.
- 배포판 계열별 패키지 도구를 헷갈리지 말 것.
| 계열 | 저수준 | 고수준(의존성 자동) |
|---|
| Red Hat(rpm) | rpm | yum/dnf |
| Debian(deb) | dpkg | apt/apt-get |
| 작업 | rpm | yum |
|---|
| 설치 | rpm -ivh | yum install |
| 업그레이드 | rpm -Uvh | yum update |
| 삭제 | rpm -e | yum remove |
| 조회 | rpm -qa | yum list |
| 파일 소속 패키지 | rpm -qf | - |
핵심 차이: rpm/dpkg는 의존성을 자동 해결 못 함(에러만 알림). yum/apt는 저장소에서 의존 패키지를 자동으로 받아 해결한다.
소스 컴파일 3단계: ./configure(환경 점검·Makefile 생성) → make(컴파일) → make install(설치). configure 옵션 --prefix로 설치 경로 지정.
- 계정 관리는 명령뿐 아니라 백엔드 파일도 출제된다.
| 파일 | 내용 | 권한 |
|---|
/etc/passwd | 계정 기본 정보(7필드) | 644(공개) |
/etc/shadow | 암호 해시·만료 정책 | 000/400(보호) |
/etc/group | 그룹·구성원 | 644 |
/etc/skel | 신규 계정 홈 템플릿 | - |
/etc/login.defs | 계정 생성 기본값 | - |
- passwd의 7필드(사용자명:x:UID:GID:설명:홈:셸)와 shadow의 암호 만료 필드를 묶어 외운다.
UID 관례: 0=root, 1~999=시스템 계정, 1000 이상=일반 사용자(배포판에 따라 500부터). UID 0인 계정은 root와 동일 권한이라 보안상 주의.
shadow가 보호되는 이유: 암호 해시가 노출되면 오프라인 크래킹이 가능해 권한을 000/400으로 제한한다. passwd만 보면 비밀번호 자리에 x만 보이는 이유.
- 시스템 관리의 자동화 도구도 이 과목에 속한다.
| 도구 | 용도 | 설정 |
|---|
| cron | 반복 작업 | crontab -e, /etc/crontab |
| at | 일회성 예약 | at 시간 |
| anacron | 부팅 후 누락 작업 보충 | /etc/anacrontab |
- cron 필드(분·시·일·월·요일)와 권한 제어 파일(
cron.allow/cron.deny)이 함정이다.
allow/deny 우선순위: cron.allow가 존재하면 거기 적힌 사용자만 허용(deny 무시). 없으면 cron.deny에 없는 사용자만 허용. allow가 deny보다 강하다.
| 명령 | 용도 |
|---|
tar | 아카이브 묶기/풀기 |
gzip/gunzip | .gz 압축/해제 |
bzip2 | .bz2 (높은 압축률) |
xz | .xz (최고 압축률) |
dd | 블록 단위 복사·이미지 |
- tar 옵션은 반드시 외운다 —
c(생성), x(해제), v(과정 표시), f(파일명), z(gzip), j(bzip2).
tar 한 줄: 묶기 tar czvf out.tar.gz dir, 풀기 tar xzvf out.tar.gz. z를 j로 바꾸면 bzip2. f는 항상 파일명 바로 앞에 둔다.
- 다중 사용자 환경에서 디스크 사용량을 제한하는 쿼터도 시스템 관리에 속한다.
| 단계 | 명령/작업 |
|---|
| 마운트 옵션 | fstab에 usrquota,grpquota 추가 |
| DB 생성 | quotacheck -cug /파티션 |
| 쿼터 활성화 | quotaon /파티션 |
| 한도 설정 | edquota 사용자 |
| 확인 | quota 사용자, repquota |
- 쿼터에는 soft limit(경고·유예기간)과 hard limit(절대 한도)이 있다.
soft vs hard: soft는 넘어도 유예기간(grace period) 동안 허용하지만, hard는 즉시 차단한다. 블록(용량)과 inode(파일 개수) 둘 다 제한 가능.
| 명령 | 역할 |
|---|
lsmod | 적재된 모듈 목록 |
modprobe | 의존성 포함 모듈 적재 |
insmod/rmmod | 모듈 적재/제거(의존성 수동) |
modinfo | 모듈 정보 |
sysctl | 커널 파라미터 조회·변경 |
insmod vs modprobe: insmod는 의존 모듈을 자동 처리하지 못하지만 modprobe는 의존성까지 해결한다(rpm:yum 관계와 동일한 패턴). 영구 커널 파라미터는 /etc/sysctl.conf.
시스템 정보 명령 모음: free(메모리), uptime(가동 시간·부하), vmstat(가상메모리 통계), iostat(I/O 통계), lscpu(CPU 정보). 성능 진단 시 함께 묶어 출제된다.
아래 모의로 마지막 점검을 한다.
- 환경 변수 vs 셸 변수 :
export로 내보내 자식 프로세스까지 물려주는 변수 / 현재 셸에만 남는 변수.
- PATH : 명령을 입력했을 때 실행 파일을 찾아볼 디렉터리 목록.
- SetUID / SetGID / Sticky Bit : 소유자 권한으로 실행 / 그룹 권한·그룹 상속 / 자기 파일만 삭제 가능.
- umask : 새로 만드는 파일·디렉터리의 기본 권한에서 빼낼 값. 파일은 666, 디렉터리는 777이 시작값이다.
- fsck : 파일시스템의 오류를 점검하고 복구하는 명령.
- RAID 0 / 1 / 5 : 속도를 위한 스트라이핑 / 안정성을 위한 미러링 / 분산 패리티로 용량과 안정성을 절충.
- LVM 3층 : PV(물리 볼륨) → VG(볼륨 그룹) → LV(논리 볼륨). 무중단 확장이 최대 장점이다.
- SIGKILL(9) / SIGTERM(15) : 프로세스가 무시할 수 없는 강제 종료 /
kill의 기본값인 정상 종료 요청.
- nice 값 : 프로세스의 양보 정도(-20~19). 작을수록 우선순위가 높고, 음수는 root만 지정할 수 있다.
- 의존성 자동 해결 :
yum·apt·modprobe처럼 필요한 다른 패키지·모듈까지 알아서 처리하는 성질. rpm·dpkg·insmod에는 없다.
- 소스 컴파일 3단계 :
./configure(환경 점검·Makefile 생성) → make(컴파일) → make install(설치).
- /etc/skel : 새 계정을 만들 때 홈 디렉터리에 복사되는 템플릿 파일 모음.
- soft limit / hard limit : 쿼터에서 유예기간 동안은 넘어도 되는 경고선 / 즉시 차단되는 절대 한도.
- anacron : 시스템이 꺼져 있어 건너뛴 정기 작업을 부팅 후 보충 실행해 주는 도구.
📝 연습 문제
선택지를 클릭하면 정답·해설이 펼쳐집니다.
SetUID 비트가 설정된 대표적인 명령으로, 일반 사용자가 자신의 비밀번호를 변경할 수 있게 하는 것은?
umask 값이 022일 때 새로 생성되는 일반 파일의 기본 권한은?
공유 디렉터리에서 각 사용자가 자신이 만든 파일만 삭제할 수 있도록 제한하는 특수 권한은?
프로세스에 전송했을 때 해당 프로세스가 무시하거나 차단할 수 없는 시그널은?
최소 3개의 디스크가 필요하며 분산 패리티를 1개 사용하는 RAID 레벨은?
LVM 구성 시 물리볼륨, 볼륨그룹, 논리볼륨을 생성하는 명령 순서로 옳은 것은?
RPM 패키지를 의존성까지 자동 해결하며 저장소에서 설치하는 고수준 도구는?
nice 우선순위 값에 대한 설명으로 옳은 것은?
/etc/fstab의 필드 구성 순서로 올바른 것은?
환경 변수와 셸 변수의 차이로 옳은 것은?