테마
UNIX/LINUX 명령어와 chmod
UNIX 계열 운영체제는 셸(shell)에 명령어를 입력해 파일과 프로세스를 다룬다. 실기 시험에서는 "설명에 맞는 명령어"를 쓰게 하거나, 파일 권한을 8진수로 바꾼 chmod 명령문을 쓰게 하는 문제가 자주 나온다. 이 문서는 자주 나오는 명령어를 역할별로 묶고, 권한 표기를 숫자로 바꾸는 절차를 정리한다.
자주 나오는 명령어
이름은 대부분 영어 단어의 줄임이라 뜻째 외운다.
| 명령어 | 하는 일 | 이름의 뜻 |
|---|---|---|
ls | 디렉터리의 파일 목록 표시 | list |
cd | 현재 디렉터리 변경 | change directory |
pwd | 현재 작업 디렉터리 경로 표시 | print working directory |
cp · mv · rm | 파일 복사 · 이동(이름 바꾸기) · 삭제 | copy · move · remove |
cat | 파일 내용을 화면에 표시 | concatenate |
find · grep | 파일 찾기 · 파일 안에서 문자열 찾기 | find · global regular expression print |
chmod · chown | 권한 변경 · 소유자와 그룹 변경 | change mode · change owner |
ps · kill | 실행 중인 프로세스 표시 · PID(Process ID, 프로세스 식별자)로 프로세스에 신호 보내 종료 | process status |
who · uname | 접속한 사용자 표시 · 시스템 이름·버전 등 정보 표시 | who · UNIX name |
fork는 셸 명령이 아니라 실행 중인 프로세스를 복제해 **새 프로세스를 만드는 시스템 호출(system call)**이지만, 시험의 명령어 목록에는 함께 나온다. find는 파일 이름·속성으로 찾고, grep은 파일 내용에서 문자열을 찾는다는 점이 자주 헷갈린다.
권한 10자리 읽기
ls -l을 하면 줄 맨 앞에 -rwxr-xr-- 같은 10자리가 나온다. 첫 자리는 파일 종류(- 일반 파일, d 디렉터리, l 심볼릭 링크(symbolic link))이고, 나머지 9자리는 세 자리씩 소유자(user)·그룹(group)·기타 사용자(other) 의 권한이다. 각 세 자리는 읽기 r, 쓰기 w, 실행 x 순서이며 권한이 없으면 -다.
8진수로 바꾸기
세 자리씩 끊어, 권한이 있으면 1·없으면 0인 2진수로 본 뒤 8진수 한 자리로 바꾼다. 곧 r=4, w=2, x=1을 더한 값이다. 예를 들어 rwxr-x--x는 111 101 001이므로 751이고, 명령문은 chmod 751 파일명이다.
| 8진수 | 권한 | ls -l 결과 |
|---|---|---|
| 755 | 소유자 전부, 나머지 읽기·실행 | -rwxr-xr-x |
| 644 | 소유자 읽기·쓰기, 나머지 읽기 | -rw-r--r-- |
| 750 | 기타 사용자는 권한 없음 | -rwxr-x--- |
| 600 | 소유자만 읽기·쓰기 | -rw------- |
기호로 바꾸기
기호 표기는 누구에게(u·g·o·a) 무엇을(+ 추가, - 제거, = 지정) 어떤 권한(r·w·x) 을 줄지 쓴다. 숫자 표기는 전체를 새로 정하고, +·-는 기존 권한의 일부만 바꾼다. 예를 들어 644인 파일에 chmod u+x,g+w를 하면 -rwxrw-r--(764)가 되고, chmod u=rwx,g=rx,o=는 750과 같다.
umask
umask는 파일이나 디렉터리를 새로 만들 때 빼 버릴 권한을 정하는 값이다. 새 파일은 666, 새 디렉터리는 777을 기본값으로 요청하고, 여기서 umask에 켜진 비트를 끈다. umask가 022이면 새 파일은 644, 새 디렉터리는 755가 되고, 027이면 파일 640·디렉터리 750이 된다.1
시험 포인트
- "파일 권한을 설정하는 명령" → chmod, "소유자·그룹 변경" → chown, "현재 디렉터리 경로 출력" → pwd, "새 프로세스 생성" → fork.
- 권한 → 숫자: r4 w2 x1을 세 자리씩 더한다.
rwxr-xr--→ 754. 답은chmod 754 파일명형태로 쓴다. - umask는 빼는 값이다. 파일 기준 666, 디렉터리 기준 777.
참고
정확히는 자릿수 뺄셈이 아니라 비트 끄기다. 두 방식은 umask 자리에 기본값에 없는 비트가 있을 때 갈린다. 파일에 umask 027을 적용하면 기타 사용자 자리는 6−7이 아니라 6(rw-)에서 7(rwx)의 비트를 모두 꺼서 0이 된다. ↩︎
