[2과목 1장 01절] ls -l 출력 해석과 rwx 권한의 의미, 8진수 변환, chmod 기호·숫자 모드를 실행 결과로 확인합니다.
🎯 이 강의 학습 목표
이 강부터 2과목 리눅스 운영 및 관리로 들어갑니다. 이 강은 1장 01절 파일 소유권과 권한 설정의 첫 번째입니다. 이 강을 마치면 ls -l 출력의 맨 앞 10자리를 완전히 해석할 수 있고, rwx를 8진수로 변환할 수 있으며, chmod의 기호 모드와 숫자 모드를 자유롭게 쓸 수 있고, 무엇보다 파일과 디렉터리에서 rwx의 의미가 어떻게 다른지 설명할 수 있게 됩니다.
권한은 2차 시험에서 가장 많이 틀리는 영역입니다. 출제 비중 자체는 4% 안팎이지만, 계산이 얽혀 있어 정답률이 낮습니다. 반대로 말하면 제대로 익혀 두면 확실한 득점원이 됩니다. 이 교재가 권한에 세 개 강을 배정한 이유입니다.
💡 ls -l 출력의 맨 앞 10자리
모든 것은 ls -l의 첫 열에서 시작합니다.
$ ls -l
-rw-r--r-- 1 chung chung 0 Sep 12 21:02 a.txt
drwxr-xr-x 2 chung chung 4096 Sep 12 21:02 d1
lrwxrwxrwx 1 chung chung 5 Sep 12 21:02 s1 -> a.txt
맨 앞 문자열은 10자리이며 1 + 3 + 3 + 3으로 끊어 읽습니다.
| 자리 | 의미 | -rw-r--r--의 경우 |
|---|---|---|
| 1번째 | 파일 유형 | - → 일반 파일 |
| 2~4번째 | 소유자(user)의 권한 | rw- → 읽기·쓰기 |
| 5~7번째 | 그룹(group)의 권한 | r-- → 읽기만 |
| 8~10번째 | 기타(other)의 권한 | r-- → 읽기만 |
1번째 자리의 파일 유형 문자는 시험에 그대로 나옵니다.
| 문자 | 유형 | 문자 | 유형 |
|---|---|---|---|
- | 일반 파일 | b | 블록 장치(디스크) |
d | 디렉터리 | c | 문자 장치(터미널) |
l | 심볼릭 링크 | p | 파이프(FIFO) |
s | 소켓 | — | — |
위 출력에서 a.txt는 -(일반 파일), d1은 d(디렉터리), s1은 l(심볼릭 링크)입니다. 그리고 심볼릭 링크의 권한이 항상 lrwxrwxrwx라는 점도 눈여겨보십시오. 링크 자체의 권한은 의미가 없고 실제 접근 권한은 원본 파일이 결정하기 때문입니다.
세 주체의 적용 순서도 중요합니다. 내가 소유자면 소유자 권한만 적용되고, 소유자가 아니면서 그룹에 속하면 그룹 권한, 둘 다 아니면 기타 권한이 적용됩니다. 순서대로 하나만 적용되며 합쳐지지 않습니다. 그래서 소유자 권한이 ---이고 기타 권한이 rwx여도, 소유자는 그 파일을 읽지 못합니다.
💡 r·w·x의 의미 — 파일과 디렉터리가 다르다
이 단원에서 가장 중요한 내용입니다. 같은 글자라도 파일에 붙었을 때와 디렉터리에 붙었을 때 뜻이 완전히 다릅니다.
| 권한 | 파일에서 | 디렉터리에서 |
|---|---|---|
| r(4) | 파일 내용을 읽기 | 디렉터리 안의 목록 보기(ls) |
| w(2) | 파일 내용을 수정 | 디렉터리 안에 파일 생성·삭제·이름 변경 |
| x(1) | 파일을 실행 | 디렉터리 안으로 들어가기·통과하기(cd, 경로 접근) |
세 가지 중요한 결과가 따라옵니다.
첫째, 디렉터리에 x가 없으면 내용을 읽을 수 없습니다. r이 있어 이름 목록은 보이지만, 그 안의 파일에 접근하려면 디렉터리를 통과해야 하는데 그것이 x 권한이기 때문입니다. 잠시 뒤 실습에서 직접 확인합니다.
둘째, 파일을 지우는 권한은 파일이 아니라 디렉터리에 있습니다. 읽기 전용(r--) 파일이라도 그 파일이 들어 있는 디렉터리에 w 권한이 있으면 삭제할 수 있습니다. 파일 삭제는 "디렉터리에서 이름을 빼는 작업"이기 때문입니다. 이 원리를 막기 위해 나온 것이 16강에서 배울 스티키 비트입니다.
셋째, 디렉터리는 보통 x가 함께 붙습니다. 디렉터리의 기본 권한이 drwxr-xr-x(755)인 이유이며, 파일의 기본 권한(644)에 x가 없는 것과 대비됩니다.
💡 8진수 변환 — 계산의 핵심
권한 3개(rwx)를 2진수 3자리로 보면 각 자리가 8진수 한 자리가 됩니다.
| 권한 | 2진수 | 8진수 | 권한 | 2진수 | 8진수 |
|---|---|---|---|---|---|
--- | 000 | 0 | r-- | 100 | 4 |
--x | 001 | 1 | r-x | 101 | 5 |
-w- | 010 | 2 | rw- | 110 | 6 |
-wx | 011 | 3 | rwx | 111 | 7 |
외울 것은 r=4, w=2, x=1 세 개뿐입니다. 나머지는 더하면 됩니다. rw-는 4+2=6, r-x는 4+1=5, rwx는 4+2+1=7입니다.
이제 10자리를 세 덩어리로 끊어 각각 변환하면 세 자리 8진수가 됩니다.
| 표기 | 소유자 | 그룹 | 기타 | 8진수 | 주로 쓰이는 곳 |
|---|---|---|---|---|---|
-rw-r--r-- | rw-=6 | r--=4 | r--=4 | 644 | 일반 파일 기본값 |
-rwxr-xr-x | rwx=7 | r-x=5 | r-x=5 | 755 | 실행 파일·디렉터리 기본값 |
-rw------- | rw-=6 | ---=0 | ---=0 | 600 | 개인 키·비밀 파일 |
-rwxrwxrwx | 7 | 7 | 7 | 777 | 모두 허용(보안상 금지) |
-rw-rw-r-- | 6 | 6 | 4 | 664 | 그룹 협업 파일 |
644·755·600·777 네 개는 반드시 즉시 떠올릴 수 있어야 합니다. 시험에서 -rwxr-xr-- 같은 표기를 주고 8진수를 묻거나 그 반대로 묻습니다.
💡 chmod — 기호 모드와 숫자 모드
chmod(change mode)는 권한을 바꾸는 명령입니다. 두 가지 표기법이 있습니다.
숫자 모드는 세 자리 8진수를 그대로 줍니다. chmod 755 file처럼 씁니다. 기존 권한을 통째로 덮어씁니다.
기호 모드는 대상 · 연산자 · 권한을 조합합니다.
| 대상 | 의미 | 연산자 | 의미 |
|---|---|---|---|
u | 소유자(user) | + | 권한 추가 |
g | 그룹(group) | - | 권한 제거 |
o | 기타(other) | = | 해당 권한으로 지정(나머지는 제거) |
a | 전체(all, = ugo) | — | — |
예를 들어 chmod u+x file은 소유자에게 실행 권한을 추가하고, chmod go-w file은 그룹과 기타에서 쓰기 권한을 제거하며, chmod a=r file은 모두에게 읽기만 남깁니다. 쉼표로 여러 개를 이어 쓸 수도 있습니다(chmod u+x,g-r file).
두 모드의 결정적 차이는 이렇습니다. 숫자 모드는 전체를 새로 지정하고, 기호 모드의 +·-는 기존 권한을 유지한 채 일부만 바꿉니다. "기존 권한을 건드리지 않고 실행 권한만 추가"하려면 chmod +x여야 하고, chmod 755로는 다른 권한까지 바뀝니다.
주요 옵션은 -R(하위까지 재귀 적용)입니다. chmod -R 777 / 같은 명령은 시스템을 망가뜨리므로 절대 실행하면 안 됩니다. 권한 변경은 파일 소유자와 root만 할 수 있습니다.
💻 실습으로 확인하기
아래는 /tmp/lm14에서 실제 실행한 결과입니다.
$ chmod 755 a.txt && ls -l a.txt
-rwxr-xr-x 1 chung chung 0 Sep 12 21:02 a.txt
$ chmod 644 a.txt && ls -l a.txt
-rw-r--r-- 1 chung chung 0 Sep 12 21:02 a.txt
$ chmod 600 a.txt && ls -l a.txt
-rw------- 1 chung chung 0 Sep 12 21:02 a.txt
앞의 변환표가 그대로 확인됩니다. 755 → rwxr-xr-x, 644 → rw-r--r--, 600 → rw-------입니다. 숫자와 문자를 번갈아 보며 눈에 익히는 것이 가장 빠른 학습법입니다.
$ chmod u+x,g-r a.txt && ls -l a.txt
-rwx------ 1 chung chung 0 Sep 12 21:02 a.txt
$ chmod a=r a.txt && ls -l a.txt
-r--r--r-- 1 chung chung 0 Sep 12 21:02 a.txt
기호 모드의 동작이 드러납니다. 직전 상태가 rw-------(600)였는데, u+x로 소유자에 x가 붙어 rwx가 되었습니다. g-r은 그룹에서 r을 빼라는 뜻인데 원래 없었으므로 변화가 없습니다. 결과는 -rwx------(700)입니다. +·-는 나머지 권한을 건드리지 않는다는 점을 확인할 수 있습니다.
반면 a=r은 모든 대상에 대해 r만 남기고 나머지를 지웁니다. 소유자에 있던 w와 x가 모두 사라져 -r--r--r--(444)가 되었습니다. =는 지정, +는 추가라는 차이가 이 두 줄에 그대로 나타납니다.
이제 가장 중요한 실험입니다. 디렉터리에서 x 권한을 빼면 어떻게 되는가를 확인합니다.
$ touch d1/in.txt
$ chmod 644 d1 # 디렉터리에서 x 제거 (rw-r--r--)
$ ls d1
in.txt # 목록은 보인다 (r 권한이 있으므로)
$ cat d1/in.txt
cat: d1/in.txt: Permission denied # 내용은 못 읽는다 (x가 없으므로)
$ chmod 755 d1 && ls d1
in.txt # 복구 후 정상
이 네 줄이 이 강에서 가장 중요한 출력입니다. 디렉터리 d1에서 x를 뺐더니, ls d1로 이름 목록은 여전히 보입니다. r 권한이 살아 있기 때문입니다. 그런데 cat d1/in.txt는 Permission denied로 실패합니다. 파일 자체의 권한은 그대로인데도 말입니다.
이유는 d1/in.txt라는 경로에 도달하려면 d1을 통과해야 하고, 그 통과 권한이 바로 x이기 때문입니다. 그래서 디렉터리의 x를 실행 권한이 아니라 접근(통과) 권한이라고 부르는 것입니다. 시험에서 "디렉터리의 x 권한의 의미"를 물으면 "디렉터리 안으로 들어가거나 경로로 통과할 수 있는 권한"이 정답입니다.
⚠️ 시험에 나오는 함정
| 함정 | 정확한 사실 |
|---|---|
| 소유자 권한이 없어도 기타 권한이 있으면 접근된다 | 소유자면 소유자 권한만 적용. 합산되지 않음 |
디렉터리의 x는 실행 권한이다 | 들어가기·통과하기 권한 |
| 읽기 전용 파일은 삭제할 수 없다 | 디렉터리에 w가 있으면 삭제 가능 |
| 심볼릭 링크의 권한이 접근을 결정한다 | 링크는 항상 lrwxrwxrwx. 원본 권한이 결정 |
chmod 755와 chmod +x는 같다 | 숫자는 전체 지정, +x는 추가만 |
chmod a=r는 읽기를 추가한다 | =는 지정 — 나머지 권한은 제거됨 |
| 일반 사용자도 남의 파일 권한을 바꿀 수 있다 | 소유자와 root만 가능 |
📝 핵심 요약 — 암기표
| 항목 | 핵심 |
|---|---|
| 10자리 구조 | 유형(1) + 소유자(3) + 그룹(3) + 기타(3) |
| 유형 문자 | - 일반 · d 디렉터리 · l 링크 · b 블록 · c 문자 · p 파이프 · s 소켓 |
| 8진수 | r=4 · w=2 · x=1 → 더하기 |
| 자주 쓰는 값 | 644(파일 기본) · 755(실행·디렉터리) · 600(비밀) · 777(금지) |
| 디렉터리의 rwx | r=목록 보기 · w=생성·삭제 · x=들어가기·통과 |
| 삭제 권한 | 파일이 아니라 디렉터리의 w가 결정 |
| 권한 적용 순서 | 소유자 → 그룹 → 기타 중 하나만 적용(합산 없음) |
| chmod 기호 | 대상 u g o a · 연산 + 추가 / - 제거 / = 지정 |
| chmod 옵션 | -R 재귀 — chmod -R 777 / 절대 금지 |
| 변경 권한자 | 소유자와 root만 |
다음 15강에서는 소유권을 바꾸는 chown·chgrp와, 새 파일의 기본 권한을 결정하는 umask 계산을 다룹니다. umask는 시험에서 계산 문제로 직접 출제됩니다.
📋 실전 문제
1. -rwxr-xr--를 8진수로 올바르게 표현한 것은?
① 755 ② 754 ③ 745 ④ 764
2. 권한 644를 문자로 표현한 것으로 알맞은 것은?
① rw-r--r-- ② rw-rw-r-- ③ r--r--r-- ④ rwxr--r--
3. 디렉터리에 부여된 x 권한의 의미로 가장 적절한 것은?
① 디렉터리를 실행 파일로 동작시킨다.
② 디렉터리 안의 파일 목록을 볼 수 있다.
③ 디렉터리 안으로 들어가거나 경로로 통과할 수 있다.
④ 디렉터리 안에 파일을 생성할 수 있다.
4. 권한이 -r--r--r--인 파일 data.txt가 있다. 이 파일을 삭제할 수 있는 조건으로 옳은 것은?
① 파일에 w 권한이 있어야만 삭제할 수 있다.
② 파일이 들어 있는 디렉터리에 w 권한이 있으면 삭제할 수 있다.
③ 파일에 x 권한이 있어야 삭제할 수 있다.
④ root만 삭제할 수 있고 일반 사용자는 불가능하다.
5. 현재 권한이 -rw-------인 파일에 chmod a=r을 적용한 결과는?
① -rw-r--r-- ② -r--r--r-- ③ -rwxr--r-- ④ -rw-rw-rw-
6. ls -l 출력의 첫 글자가 c인 파일의 유형은?
① 일반 파일 ② 디렉터리 ③ 블록 장치 ④ 문자 장치
7. 기존 권한을 그대로 두고 소유자에게만 실행 권한을 추가하는 명령은?
① chmod 700 file ② chmod u+x file
③ chmod u=x file ④ chmod a+x file
8. 파일 소유자가 lms이고 권한이 ----rwxrwx일 때, 소유자 lms가 이 파일을 읽으려 하면?
① 소유자이므로 모든 권한이 적용되어 읽을 수 있다.
② 기타 권한이 rwx이므로 읽을 수 있다.
③ 소유자 권한이 ---이므로 읽을 수 없다.
④ 그룹 권한이 rwx이므로 읽을 수 있다.
✅ 정답과 해설
1. 정답 ②
세 덩어리로 끊으면 rwx=7, r-x=5, r--=4이므로 754입니다. ①의 755는 기타가 r-x일 때, ③의 745는 그룹이 r--이고 기타가 r-x일 때, ④의 764는 그룹이 rw-일 때입니다.
2. 정답 ①
6=rw-, 4=r--, 4=r--이므로 rw-r--r--입니다. ②는 664, ③은 444, ④는 744에 해당합니다. 644는 일반 파일의 기본 권한이므로 반드시 외워 두십시오.
3. 정답 ③
디렉터리의 x는 들어가기·통과 권한입니다. ②의 목록 보기는 r, ④의 파일 생성은 w의 역할입니다. ①처럼 디렉터리를 실행 파일로 동작시킬 수는 없습니다. x를 빼면 ls로 이름은 보여도 그 안의 파일에는 접근할 수 없게 됩니다.
4. 정답 ②
파일 삭제는 디렉터리에서 이름을 제거하는 작업이므로, 권한의 근거는 파일이 아니라 디렉터리의 w입니다. 그래서 읽기 전용 파일도 상위 디렉터리에 쓰기 권한이 있으면 지워집니다. 이 허점을 막는 장치가 16강에서 배울 스티키 비트입니다.
5. 정답 ②
=는 지정이므로 대상 전체(a=ugo)의 권한이 r만 남고 나머지는 제거됩니다. 소유자에 있던 w도 사라져 -r--r--r--(444)가 됩니다. ①은 chmod 644의 결과이고, a+r이었다면 기존 권한을 유지한 채 읽기만 추가되어 -rw-r--r--가 되었을 것입니다.
6. 정답 ④
c는 문자 장치(character device)로 터미널·/dev/null 같은 것이 해당합니다. ③의 블록 장치는 b이며 디스크가 대표적입니다. 두 문자는 37강 장치 파일 단원에서 다시 다룹니다.
7. 정답 ②
u+x가 기존 권한을 유지한 채 소유자에게 실행 권한만 추가합니다. ①의 숫자 모드는 전체를 700으로 덮어써 그룹·기타 권한이 모두 사라집니다. ③의 u=x는 소유자 권한을 x 하나로 지정해 읽기·쓰기가 사라지고, ④의 a+x는 모든 대상에 실행 권한을 추가합니다.
8. 정답 ③
권한은 소유자 → 그룹 → 기타 순으로 확인해 해당하는 하나만 적용되며 합산되지 않습니다. lms는 소유자이므로 소유자 권한 ---만 적용되어 읽을 수 없습니다. 기타 권한이 rwx라는 사실은 소유자에게 아무 도움이 되지 않습니다. 권한 설정에서 흔히 저지르는 실수이자 시험 단골 함정입니다.
📚 참고 자료
관련 주제
- 허가권
- rwx
- 8진수 권한
- chmod
- ls -l
- 디렉터리 권한
- 파일 유형
- 권한 계산
- 자격증
- 자격증 강의
- 리눅스마스터 2급 완전정복
- 무료강의
- 무료 온라인 강의
- NUGUNA
- 누구나
📚 시리즈 전체 공유
리눅스마스터 2급 완전정복
이 강의가 속한 시리즈는 총 14강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.
댓글
불러오는 중...
