CertNote/ 출퇴근 학습 노트
로드맵
KOEN
리눅스마스터 2급 · 2급리눅스마스터 2급
  • Week 1
    • 1.운영체제와 커널: 리눅스가 하는 일
    • 2.리눅스의 탄생: 유닉스에서 리누스까지
    • 3.자유 소프트웨어와 오픈소스: 라이선스가 정하는 것
    • 4.배포판: 커널과 도구를 하나로 묶어 파는 단위
    • 5.Week 1 종합 복습: 리눅스라는 이름의 정체
  • Week 2
  • Week 3
  • Week 4
    • 1.권한의 구조: rwx와 8진수
    • 2.소유권과 umask
    • 3.특수 권한: SetUID · SetGID · Sticky bit
    • 4.디렉터리 계층과 파일 시스템 관리
    • 5.Week 4 종합 복습: 권한 한 장 정리
  • Week 5
  • Week 6
  • Week 7
  • Week 8
  • Week 9
  • Week 10
  • Week 11
리눅스마스터 1급 · 1급리눅스마스터 1급
합격 후기

© CertNote · 주간랩스

  • 소개
  • 수정 기록
  • 문의
  • 이용약관
  • 개인정보처리방침
← 리눅스마스터 2급/Week 4/Day 1

기준: 리눅스마스터 2급 출제 기준·오류 제보

리눅스마스터 2급· AssociateWeek 4 · Day 1읽기 약 9분
핵심 정리
  • 리눅스 권한은 소유자(user) · 그룹(group) · 기타(other) 세 부류에 각각 rwx 를 주는 9칸 구조다.
  • r=4, w=2, x=1 을 더해 한 자리 숫자로 쓴다. 그래서 rwx=7, rw-=6, r-x=5다.
  • 디렉터리에서 x는 실행이 아니라 "들어갈 수 있음" 이다. 이 차이를 묻는 문항이 있다.
  • 권한 변경 명령은 chmod 다. 8진수 방식(chmod 755)과 기호 방식(chmod u+x) 둘 다 쓴다.
  • 외워 둘 값: 파일 644 · 디렉터리 755 · 비밀 파일 600 · 위험한 777.

Day 1 - 권한의 구조: rwx와 8진수

권한은 아홉 칸이다

ls -l의 맨 앞 열 글자를 다시 본다. 첫 글자는 파일 종류이고, 나머지 아홉 글자가 권한이다.

   -  rwx  r-x  r--
   │   │    │    │
   │   │    │    └── other  기타 사용자
   │   │    └─────── group  소유 그룹
   │   └──────────── user   소유자
   └──────────────── 파일 종류 (- 파일, d 디렉터리, l 링크)
  • 세 칸씩 끊어 읽는다. 소유자 → 그룹 → 기타 순서다.
  • 권한이 없으면 그 자리에 - 가 들어간다. r-x는 읽기와 실행은 되지만 쓰기는 안 된다는 뜻이다.

누가 어느 칸을 적용받나

상황적용되는 칸
내가 그 파일의 소유자다user 칸만
내가 소유 그룹에 속한다group 칸만
둘 다 아니다other 칸만

위에서부터 하나만 적용된다. 소유자라면 group·other 칸이 아무리 넓어도 user 칸만 본다. 그래서 소유자에게 권한을 좁게 주면 오히려 소유자가 못 읽는 상황이 생긴다.

판정은 다음 순서로 한 번만 일어난다. 앞에서 걸리면 뒤는 보지 않는다.

   ① root 인가?            → 예: rwx 검사를 거의 받지 않는다
   ② 파일의 소유자인가?      → 예: user 칸으로 결정. 끝
   ③ 소유 그룹에 속하는가?   → 예: group 칸으로 결정. 끝
   ④ 그 밖의 사용자          → other 칸으로 결정

예를 하나 놓고 따져 본다. alice는 dev 그룹, bob도 dev 그룹, carol은 어느 쪽도 아니다.

   -rw-r-----  1 alice dev  120 Sep  3 09:00 plan.txt
사용자적용 칸읽기쓰기
alice (소유자)rw-OO
bob (dev 그룹)r--OX
carol (기타)---XX
root—OO
  • 이번에는 권한이 ----rw-rw-(066)라고 가정한다. alice는 소유자이므로 user 칸 ---만 적용받아 읽지 못한다. 같은 그룹의 bob과 남인 carol은 읽고 쓸 수 있는데도 그렇다.
  • 다만 alice는 소유자이므로 chmod로 권한을 다시 고칠 수는 있다. 권한을 바꿀 자격은 rwx가 아니라 소유 여부가 정한다.
  • root는 읽기·쓰기 검사를 받지 않는다. 그래서 000 파일도 root는 읽는다.

rwx의 뜻 — 파일과 디렉터리가 다르다

권한파일에서디렉터리에서
r (read)내용을 읽는다목록을 본다 (ls)
w (write)내용을 고친다안에 만들고 지운다
x (execute)실행한다들어간다 (cd)
  • 디렉터리의 x가 없으면 cd 로 들어갈 수 없다. 안에 무엇이 있는지 알아도 접근이 막힌다.
  • 디렉터리의 w는 그 안의 파일을 만들고 지우는 권한이다. 파일 자체의 권한과는 별개다. 즉 읽기 전용 파일이라도 디렉터리에 w가 있으면 지울 수 있다.
  • r만 있고 x가 없는 디렉터리는 이름만 보이고 상세 정보는 볼 수 없다.

디렉터리 권한은 조합으로 봐야 한다

디렉터리는 이름 목록을 적어 둔 표라고 생각하면 풀린다. r은 그 표를 읽는 권한, w는 표에 줄을 넣고 빼는 권한, x는 표에 적힌 이름을 따라 실제 파일에 닿는 권한이다.

디렉터리 권한lscd안의 파일 읽기파일 만들기·지우기
r-xOOOX
rwxOOOO
--xXO이름을 알면 OX
r--이름만XXX
rw-이름만XXX (x가 없어 w가 무력)
-wxXO이름을 알면 OO
  • w는 x와 함께 있어야 쓸모가 있다. 파일을 만들거나 지우려면 그 디렉터리에 닿을 수 있어야 하기 때문이다.
  • x는 경로 전체에 필요하다. /home/alice/docs/a.txt를 읽으려면 /, /home, /home/alice, /home/alice/docs 모두에 x 가 있어야 한다. 파일 권한이 644여도 중간 디렉터리 하나가 막히면 읽지 못한다.
$ chmod a-x docs
$ cd docs
bash: cd: docs: Permission denied
$ ls -l docs
ls: cannot access 'docs/a.txt': Permission denied
total 0
-????????? ? ? ? ?            ? a.txt
$ cat docs/a.txt
cat: docs/a.txt: Permission denied
  • r만 남은 디렉터리에서 ls -l은 이름(a.txt)은 알아내지만 그 파일의 정보에는 닿지 못해, 권한·소유자·크기 자리가 전부 ?로 나온다.

파일에서 자주 헷갈리는 세 가지

  • 파일을 지우는 권한은 파일에 없다. rm은 디렉터리의 목록에서 이름을 빼는 일이므로 디렉터리의 w·x 가 정한다. 파일의 w는 내용을 고치는 권한일 뿐이다.
  • 스크립트는 x만으로는 실행되지 않는다. 셸이 내용을 읽어야 하므로 r도 있어야 한다.
  • 심볼릭 링크는 항상 lrwxrwxrwx 로 보인다. 실제 접근은 링크가 아니라 가리키는 원본의 권한이 정한다.

8진수로 바꾸기

각 권한에 값을 정해 두고 더한다.

권한값
r4
w2
x1
-0
표기계산숫자
rwx4+2+17
rw-4+26
r-x4+15
r--44
-wx2+13
-w-22
--x11
---00

세 부류를 이어 붙이면 세 자리 숫자가 된다.

   rwx  r-x  r-x
    7    5    5     →  755
 
   rw-  r--  r--
    6    4    4     →  644

외워 둘 값

값표기쓰이는 곳
644rw-r--r--일반 파일의 기본값
755rwxr-xr-x디렉터리·실행 파일의 기본값
600rw-------비밀 키, 설정 파일 — 소유자만
700rwx------개인 디렉터리
666rw-rw-rw-누구나 수정 — 위험
777rwxrwxrwx모두에게 전부 — 매우 위험

777은 답이 아니다. 권한 문제가 생겼을 때 777을 주면 당장은 되지만 누구나 지우고 고칠 수 있는 상태가 된다. 시험에서도 실무에서도 "권장하지 않는 설정"으로 다뤄진다.

양방향으로 바꿔 보기

숫자 → 기호는 각 자리를 4·2·1로 쪼갠다.

   640  →  6 = 4+2    4 = 4      0 = 0
           rw-        r--        ---      →  rw-r-----
 
   751  →  7 = 4+2+1  5 = 4+1    1 = 1
           rwx        r-x        --x      →  rwxr-x--x

기호 → 숫자는 세 칸씩 끊어 더한다.

   rw-rw-r--  →  (4+2) (4+2) (4)      →  664
   rwxr-x---  →  (4+2+1) (4+1) (0)    →  750
   r--------  →  (4) (0) (0)          →  400
값표기읽는 법
640rw-r-----소유자는 읽고 쓰고, 그룹은 읽기만, 기타는 차단
750rwxr-x---그룹까지만 들어올 수 있는 디렉터리
664rw-rw-r--그룹도 수정할 수 있는 파일
775rwxrwxr-x그룹이 함께 쓰는 디렉터리
400r--------소유자도 읽기만
711rwx--x--x남은 목록을 못 보지만 지나갈 수는 있는 디렉터리
  • 홀수면 x가 있다. 1이 더해져야 홀수가 되기 때문이다. 5·7은 실행 가능, 4·6은 실행 불가다.
  • 2·3·6·7에는 w가 있다. "기타 사용자가 쓸 수 있는가"는 마지막 자리가 이 넷 중 하나인지로 본다.
  • 한 자리의 최댓값은 7이다. chmod 855처럼 8·9가 들어간 값은 존재하지 않는다.

chmod — 권한 바꾸기

8진수 방식

chmod 755 script.sh      # rwxr-xr-x
chmod 644 note.txt       # rw-r--r--
chmod 600 id_rsa         # rw-------
chmod -R 755 /var/www    # 하위까지 재귀적으로
  • 세 자리를 한 번에 통째로 덮어쓴다. 기존 권한은 남지 않는다.

기호 방식

chmod u+x script.sh      # 소유자에게 실행 권한 추가
chmod g-w note.txt       # 그룹의 쓰기 권한 제거
chmod o=r note.txt       # 기타 사용자를 읽기만으로 지정
chmod a+r note.txt       # 모두에게 읽기 추가
chmod u+x,g+w file       # 여러 개를 쉼표로
대상뜻
uuser — 소유자
ggroup — 그룹
oother — 기타
aall — 전부 (u+g+o)
연산자뜻
+권한 추가
-권한 제거
=그 권한으로 지정 (나머지는 없앰)

두 방식의 차이. 8진수는 전체를 새로 쓰고, 기호는 지금 상태에서 더하고 뺀다. "실행 권한만 추가하라"는 문제에는 chmod u+x가 맞고, "권한을 rwxr-xr-x로 만들라"는 문제에는 chmod 755가 맞다.

같은 파일에 차례로 적용해 보면 세 연산자의 차이가 드러난다.

순서실행한 명령실행 뒤 권한일어난 일
시작—rw-r--r-- (644)
1chmod g+w note.txtrw-rw-r-- (664)그룹에 w만 더해짐
2chmod o-r note.txtrw-rw---- (660)기타의 r만 빠짐
3chmod u=r note.txtr--rw---- (460)소유자는 r만 남음
4chmod a=rw note.txtrw-rw-rw- (666)셋 다 rw로 지정
5chmod go= note.txtrw------- (600)그룹·기타 권한을 전부 비움
  • +와 -는 적은 것만 건드리고 나머지는 그대로 둔다. =는 그 대상의 세 칸을 통째로 다시 쓴다.
  • 대상은 붙여 쓸 수 있다 — ug+x(소유자와 그룹), go-w(그룹과 기타). = 뒤를 비우면 권한을 모두 없앤다.
  • 같은 결과를 두 방식으로 쓸 수 있어야 한다 — chmod 755 f = chmod u=rwx,go=rx f, chmod 600 f = chmod u=rw,go= f.
chmod 옵션뜻
-R디렉터리 하위 전체에 적용 (대문자)
-v처리한 파일마다 결과를 출력
-c실제로 바뀐 것만 출력

⚠️ chmod -R 755 디렉터리는 안의 일반 파일까지 전부 실행 가능하게 만든다. 디렉터리에는 755가 맞지만 문서 파일에는 644가 맞다. 재귀 옵션은 디렉터리와 파일에 같은 값이 들어간다는 점을 기억하고 쓴다. 그리고 chmod의 재귀는 -r이 아니라 대문자 -R 이다.

  • chmod를 쓸 수 있는 사람은 그 파일의 소유자와 root뿐이다. 그룹 구성원이나 쓰기 권한이 있는 다른 사용자는 권한을 바꾸지 못한다.

권한 확인하기

ls -l note.txt           # -rw-r--r-- 1 user group ...
ls -ld /var/www          # 디렉터리 자신의 권한 (-d 가 핵심)
stat note.txt            # 8진수와 기호 표기를 함께 보여준다
  • ls -ld 의 -d는 "디렉터리 안이 아니라 디렉터리 자체를 보라"는 옵션이다. -d 없이 디렉터리에 ls -l을 하면 내용물 목록이 나온다.
$ stat note.txt
  File: note.txt
  Size: 0               Blocks: 0          IO Block: 4096   regular empty file
Access: (0644/-rw-r--r--)  Uid: ( 1000/    user)   Gid: ( 1000/    user)
  • stat의 Access: 줄에 8진수와 기호 표기가 나란히 나온다. 변환이 맞는지 확인할 때 쓴다. 맨 앞의 0은 모레 다룰 특수 권한 자리다.

내일은 이 권한이 누구의 것인지 정하는 소유권과 그룹, 그리고 기본 권한을 깎는 umask를 다룬다.

📖 용어

  • 소유자(owner/user) : 파일을 만든 사용자. 권한의 첫 세 칸이 여기에 적용된다.
  • 그룹(group) : 파일에 붙은 그룹. 그 그룹에 속한 사용자가 가운데 세 칸을 적용받는다.
  • 기타(other) : 소유자도 그룹도 아닌 나머지 모든 사용자.
  • rwx : 읽기·쓰기·실행 권한. 디렉터리에서는 목록·생성삭제·진입을 뜻한다.
  • 8진수 표기 : r=4, w=2, x=1을 더해 부류마다 한 자리로 나타낸 권한 표기법.
  • chmod : 권한을 바꾸는 명령. 8진수 방식과 기호 방식이 있다.
  • ls -ld : 디렉터리 내용이 아니라 디렉터리 자체의 정보를 보는 옵션.

📝 연습 문제

선택지를 클릭하면 정답·해설이 펼쳐집니다.

문제 1

다음 중 rwxr-xr-- 권한을 8진수로 바르게 나타낸 것은?

문제 2

다음 중 디렉터리에 부여된 x 권한의 의미로 알맞은 것은?

문제 3

다음 중 파일의 소유자에게만 실행 권한을 추가하는 명령으로 알맞은 것은?

문제 4

다음 중 일반 텍스트 파일에 흔히 사용하는 기본 권한값으로 알맞은 것은?

문제 5

다음 중 소유자, 그룹, 기타 사용자 모두에게 읽기·쓰기·실행 권한을 부여하는 명령으로 알맞은 것은?

이전Week 3 종합 복습: 명령어 한 장 정리Week 3 · Day 5다음 소유권과 umaskWeek 4 · Day 2

참고 공식 자료

  • 리눅스마스터 2급 공식 출제 기준(새 탭에서 열림)

이 페이지

  • 권한은 아홉 칸이다
  • 누가 어느 칸을 적용받나
  • rwx의 뜻 — 파일과 디렉터리가 다르다
  • 디렉터리 권한은 조합으로 봐야 한다
  • 파일에서 자주 헷갈리는 세 가지
  • 8진수로 바꾸기
  • 외워 둘 값
  • 양방향으로 바꿔 보기
  • chmod — 권한 바꾸기
  • 8진수 방식
  • 기호 방식
  • 권한 확인하기
  • 용어
  • 연습 문제