Home » OS » 리눅스 » 리눅스 디렉토리 권한에 대해 알아봅시다.

리눅스 디렉토리 권한에 대해 알아봅시다.

보통의 파일 권한과 다르게, 리눅스 디렉토리 권한은 X 권한 때문에 이해하기 난해합니다. 이 권한에 대해 알아보고 간단하게 실습해 보겠습니다. 아직, 권한에 대한 이해가 부족하다면, 아래 글을 보고 오면 좋습니다.


리눅스 디렉토리 실행 권한

사실, 디렉토리에도 실행 권한이 있습니다. 그런데 이 문서를 보면, 실행 권한 보다는, 검색, 탐색 권한에 가깝다는 것을 알 수 있습니다. 접근해야 하는 경로가 현재 위치로부터 a/b로 주어졌다고 해 보겠습니다.

그러면 현 위치로부터 a 하위 디렉토리인 b로 접근하기 위해 그려지는 그래프는 위와 같습니다. b에 접근하기 위해서, a를 거쳐 가야 합니다.

그런데, 이 때, a의 실행 권한이 없다고 하면 어떻게 될까요?

  • 이는 디렉토리 a의 search permission이 없다는 의미입니다.
  • a에 대해 접근할 수 없기 때문에, b에 대해서도 접근할 수 없습니다.

a에 대해 접근할 수 없다면, a로 이동하는 것도 되지 않습니다.

[그림 1] x 권한이 없는 t4에 이동하려고 시도

왜? 로그인 한 유저 cho는, t4에 대한 실행 권한이 없기 때문입니다. 그러면 아래의 경우는 어떨까요?

[그림 2] t4에 있는 1.txt에 접근하려고 시도

cat t4/1.txt는 디렉토리 t4 밑에 있는 1.txt에 접근합니다. 이것 역시 거부당합니다. 왜 그럴까요?

먼저, t4/1.txt가 들어왔기 때문에, t4 밑에 있는 1.txt에 접근하는 문제가 됩니다. 그렇기 때문에, 아래와 같은 일들을 수행합니다.

  • t4에 접근합니다.
  • 그런데 t4의 실행 권한이 없으므로, 거부당합니다.

따라서, 보통 디렉토리에 Execute 권한이 없으면 의미가 없습니다. cd로 접근하는 것 조차 되지 않기 때문입니다.


디렉토리 읽기, 쓰기 권한

이제, 읽기, 쓰기 권한을 알아보겠습니다.

  • 읽기 권한은 디렉토리를 열 때 필요합니다.
  • 쓰기 권한은 디렉토리에 파일을 추가할 때 필요합니다.

디렉토리에 있는 파일들의 리스트를 볼 때 읽기 권한이 필요하다고 생각하시면 편하겠습니다. 이것도 한 번 보겠습니다.

[그림 3] dir 명령어로 t3을 open 하는 것을 시도

먼저, t3의 권한을 보면, root에 대해서는 rwx 모두 있고, cho 그룹에 대해서는 wx만 있어요. r 권한만 없습니다. dir t3을 하면, 허가 거부가 나왔어요. 이는 아래 2가지 사실을 의미합니다.

  • cho가 디렉토리 t3에 대해 읽기 권한만 없었습니다.
  • dir t3이 거부되었기 때문에, dir 명령어는 디렉토리 읽기 권한을 필요로 합니다.

쓰기 권한은 어떨까요?

t4 디렉토리에 2.txt를 추가한다고 해 보겠습니다. 그러면

  • 1.txt만 있었는데
  • 2.txt가 있다는 내용이 디렉토리에 추가되어야 합니다.

결국 디렉토리에 정보를 추가로 써야 합니다. 이 경우 t4에 대한 write 권한이 없으면 거부 당합니다.

[그림 4] t1 디렉토리에서 2.txt 생성 시도

왜 거부당할까요? 저는 t1 작업 디렉토리에서, touch 2.txt를 했습니다.

  • 2.txt가 없었으니까 생성됩니다.
  • 그런데, 이것은 t1 디렉토리에 2.txt에 대한 정보를 추가로 써야 합니다.

따라서, 거부당합니다. 이제, 아래의 경우를 생각해 봅시다.

현재 저는 t1 디렉토리 write 권한이 없습니다. 그런데, t1 하위 디렉토리의 t1에는 rwx 권한이 있습니다. 이 경우, t1 디렉토리 밑에 있는 t1에 1이 제대로 추가될까요?

  • t1 디렉토리의 구성 내용은 바뀌지 않았습니다.
  • 단지, t1 밑에 있는 t1의 구성 내용이 바뀌었습니다.
  • 해당 디렉토리에 대해 저는 rwx 권한을 가지고 있었습니다.

따라서, 이 경우 파일 추가가 됩니다. 2번째 부분이 중요해요.

[그림 5] 1.txt 변경 시도

리눅스 디렉토리 권한 w가 없는 t1 디렉토리 아래에 있는 1.txt를 수정하는 것은 어떨까요?

  • 디렉토리가 아닌 파일 1.txt를 수정하는 것입니다.
  • 따라서, 1.txt의 권한을 따라가는데, cho는 1.txt의 write 권한이 있습니다.

따라서, 수정이 정상적으로 수행됩니다.

Leave a Comment

16 − 8 =