리눅스 파일 및 디렉토리 권한 관리

CompTIABeginner
지금 연습하기

소개

이 실습에서는 리눅스 환경에서 파일 및 디렉토리 권한을 관리하기 위한 핵심 기술을 습득합니다. 먼저 전용 작업 공간을 설정하고, 연습의 기초가 될 새 디렉토리와 샘플 파일을 생성하는 것으로 시작합니다. 이러한 실습 위주의 접근 방식을 통해 필수적인 명령줄 도구를 사용하여 데이터에 대한 액세스를 제어하는 방법을 익힐 수 있습니다.

실습 전반에 걸쳐 chown 명령어를 사용하여 파일 소유권을 변경하고, chmod 명령어를 사용하여 다양한 사용자 및 그룹에 대한 읽기, 쓰기, 실행 권한을 수정하게 됩니다. 이러한 개념을 먼저 개별 파일에 적용해 본 다음, 이러한 권한이 디렉토리 액세스에 어떻게 고유하게 영향을 미치는지 배우게 됩니다. 실습을 마칠 때쯤이면 리눅스 시스템에서 파일을 효과적으로 보호하고 사용자 액세스를 관리할 수 있는 능력을 갖추게 될 것입니다.

이 실습은 학습과 연습을 돕기 위해 단계별 지침을 제공하는 가이드 실습입니다. 각 단계를 완료하고 실무 경험을 쌓으려면 지침을 주의 깊게 따르십시오. 과거 데이터에 따르면 이 실습은 완료율 98%초급 수준 실습입니다. 학습자들로부터 100%의 긍정적인 평가를 받았습니다.

작업 공간 준비 및 파일 생성

이 단계에서는 이번 실습을 위한 전용 작업 공간을 설정하는 것부터 시작합니다. 파일을 특정 디렉토리에 정리하는 것은 깨끗하고 관리하기 쉬운 파일 시스템을 유지하기 위한 리눅스의 기본 관행입니다. 디렉토리를 만든 다음 그 안에 새 파일을 생성할 것이며, 이 파일은 다음 단계에서 진행할 권한 관리 연습의 대상이 됩니다.

먼저, 현재 작업 디렉토리인 ~/project 안에 RandD(연구 및 설계용) 라는 이름의 새 디렉토리를 생성해 보겠습니다. 새 디렉토리를 만들 때는 mkdir 명령어를 사용합니다.

터미널에서 다음 명령어를 실행하세요:

mkdir RandD

다음으로, 방금 생성한 RandD 디렉토리로 이동합니다. cd(디렉토리 변경) 명령어를 사용하면 파일 시스템의 디렉토리 사이를 이동할 수 있습니다.

cd RandD

이제 터미널 프롬프트에 현재 위치가 ~/project/RandD 디렉토리 내부임이 표시되어야 합니다.

이제 설계 문서를 나타낼 빈 파일을 생성해 보겠습니다. touch 명령어는 비어 있는 새 파일을 만드는 간단한 방법입니다. 파일이 이미 존재하는 경우, touch는 내용물은 변경하지 않고 수정 시간 정보만 업데이트합니다.

design_doc.odt라는 이름의 새 파일을 생성합니다:

touch design_doc.odt

파일이 생성되었는지 확인하고 기본 속성을 조사하려면 ls -l 명령어를 사용합니다. 이 명령어는 현재 디렉토리의 내용을 긴 형식으로 나열하여 권한, 소유자, 그룹, 크기 및 수정 날짜와 같은 상세 정보를 제공합니다.

ls -l

다음과 유사한 출력이 표시될 것입니다. 기본적으로 새 파일은 현재 사용자 계정 (labex) 과 기본 그룹 (labex) 의 소유로 생성됩니다. -rw-rw-r--와 같은 권한 문자열은 다음 단계에서 자세히 설명하겠습니다.

total 0
-rw-rw-r-- 1 labex labex 0 Jun 26 10:36 design_doc.odt

이제 작업 공간 준비를 마치고 실습 대상 파일을 성공적으로 생성했습니다. 다음 단계에서는 소유권과 권한을 수정하는 방법을 배우게 됩니다.

chown 명령어로 파일 소유권 변경

이 단계에서는 파일의 소유권을 변경하는 방법을 배웁니다. 리눅스에서 모든 파일과 디렉토리에는 소유자 (특정 사용자) 와 그룹이 할당됩니다. 이러한 소유권은 누가 파일을 읽고, 쓰고, 실행할 권한이 있는지를 결정하는 데 도움을 주기 때문에 리눅스 보안 모델의 초석이 됩니다. 소유권을 변경하는 데 사용되는 명령어는 chown입니다.

우리의 시나리오에서는 design_doc.odt 파일을 새 사용자 student1과 새 협업 그룹 research가 관리하도록 설정해야 합니다. 이 사용자와 그룹이 아직 존재하지 않으므로 먼저 생성해야 합니다.

여전히 ~/project/RandD 디렉토리에 있는지 확인하세요. 그렇지 않다면 cd ~/project/RandD 명령어를 사용하여 이동하십시오.

먼저 groupadd 명령어를 사용하여 research 그룹을 생성합니다. 이는 관리자 권한이 필요한 시스템 수준의 작업이므로 sudo를 사용해야 합니다.

sudo groupadd research

다음으로 useradd 명령어를 사용하여 student1 사용자를 생성합니다. -m 플래그는 새 사용자의 홈 디렉토리를 생성하는 데 사용되며, 이는 일반적인 관례입니다. 이 작업 역시 sudo가 필요합니다.

sudo useradd -m student1

이제 student1 사용자와 research 그룹이 존재하므로 design_doc.odt 파일의 소유권을 변경할 수 있습니다. chown의 구문은 chown 사용자:그룹 파일이름입니다. 파일을 다른 사용자에게 할당하는 것이므로 이 명령어를 실행하려면 sudo가 필요합니다.

sudo chown student1:research design_doc.odt

소유권이 업데이트되었는지 확인하려면 ls -l 명령어를 다시 사용합니다.

ls -l

이제 출력 결과에 사용자 소유자는 student1, 그룹 소유자는 research로 표시됩니다.

total 0
-rw-rw-r-- 1 student1 research 0 Jun 26 10:36 design_doc.odt

이전 출력과 비교해 보세요. 세 번째와 네 번째 열이 labex labex에서 student1 research로 변경된 것을 확인할 수 있으며, 이는 명령어가 성공적으로 수행되었음을 증명합니다. 이제 설계 문서의 소유권 이전을 완료했습니다.

chmod 명령어로 파일 권한 수정

이 단계에서는 chmod(모드 변경) 명령어를 사용하여 파일을 읽고, 쓰고, 실행할 수 있는 대상을 제어하는 방법을 배웁니다. 파일 권한은 리눅스 보안 모델의 핵심적인 측면입니다. 문서를 더 안전하게 보호하기 위해 "기타 사용자 (others)"에 대한 권한을 제거하는 연습을 합니다.

먼저 ~/project/RandD 디렉토리에 있는지 확인하세요. ls -l을 사용하여 design_doc.odt의 현재 권한을 다시 확인해 보겠습니다.

ls -l
-rw-rw-r-- 1 student1 research 0 Jun 26 10:36 design_doc.odt

-rw-rw-r-- 문자열은 파일의 권한을 나타냅니다. 이는 사용자(소유자), 그룹, 기타 사용자(그 외 모든 사람) 를 위한 세 글자씩 세 세트로 나뉩니다.

  • rw-: 소유자인 student1은 읽기 (read) 및 쓰기 (write) 권한을 가집니다.
  • rw-: 그룹인 research는 이미 읽기 및 쓰기 권한을 가지고 있습니다.
  • r--: 기타 사용자는 읽기 권한만 가집니다.

보시다시피 research 그룹은 이미 이 문서에 대한 쓰기 권한을 가지고 있어 협업이 가능합니다. 하지만 문서의 기밀성을 유지하려면 "기타 사용자"에 대한 모든 권한을 제거해야 합니다. 이는 흔히 사용되고 효율적인 방법인 8 진수 (숫자) 표기법을 사용한 chmod로 수행할 수 있습니다.

현재 권한을 다시 한번 확인해 보겠습니다:

ls -l

출력 결과에서 현재 권한을 확인할 수 있습니다:

-rw-rw-r-- 1 student1 research 0 Jun 26 10:36 design_doc.odt

이제 문서의 보안을 위해 "기타 사용자"의 모든 권한을 제거하겠습니다.

8 진수 권한의 작동 방식은 다음과 같습니다:

  • r (읽기) = 4
  • w (쓰기) = 2
  • x (실행) = 1

각 카테고리 (사용자, 그룹, 기타) 에 대해 원하는 권한의 숫자를 합산합니다.

  • 사용자: 읽기 (4) + 쓰기 (2) = 6
  • 그룹: 읽기 (4) + 쓰기 (2) = 6
  • 기타 사용자: 권한 없음 = 0

결과적인 권한 코드는 660입니다. 이를 적용해 보겠습니다.

sudo chmod 660 design_doc.odt

마지막으로 권한을 한 번 더 확인합니다.

ls -l

출력 결과에서 "기타 사용자"가 이제 아무런 권한이 없음 (---) 을 확인할 수 있으며, 문서가 안전하게 보호되었습니다.

-rw-rw---- 1 student1 research 0 Jun 26 10:36 design_doc.odt

파일 권한을 성공적으로 수정하여 그룹 협업은 허용하면서 외부인의 액세스는 제한했습니다.

디렉토리 액세스 권한 제어

마지막 단계에서는 RandD 디렉토리 전체를 보호합니다. 파일과 마찬가지로 디렉토리에도 액세스를 제어하는 권한이 있습니다. 그러나 디렉토리에서 읽기, 쓰기, 실행 권한의 의미는 파일과 다릅니다.

  • r (읽기): 사용자가 디렉토리의 내용을 나열할 수 있게 합니다 (즉, 내부의 파일 및 하위 디렉토리 이름을 볼 수 있음).
  • w (쓰기): 사용자가 디렉토리 내에서 파일을 생성, 삭제 및 이름을 변경할 수 있게 합니다. 이 권한은 파일 자체의 권한과 상관없이 디렉토리의 내용을 수정할 수 있게 하므로 매우 강력합니다.
  • x (실행): 사용자가 디렉토리에 진입 (예: cd 사용) 하고 내부의 파일이나 하위 디렉토리에 액세스할 수 있게 합니다. 실행 권한이 없으면 읽기 권한이 있더라도 디렉토리 내부의 항목에 접근할 수 없습니다.

먼저, RandD 디렉토리 자체에 대해 작업할 수 있도록 상위 디렉토리인 ~/project로 이동합니다.

cd ..

이제 ls -ld 명령어를 사용하여 RandD 디렉토리의 현재 소유권과 권한을 조사해 보겠습니다. 여기서 -d 플래그가 매우 중요합니다. 이는 ls가 디렉토리의 내용이 아니라 디렉토리 자체에 대한 정보를 나열하도록 지시합니다.

ls -ld RandD

초기 출력은 다음과 같을 것입니다:

drwxrwxr-x 2 labex labex 28 Jun 26 10:36 RandD

이는 소유자 (labex) 가 모든 권한 (rwx) 을 가지고 있고, 그룹 (labex) 도 모든 권한 (rwx) 을 가지고 있으며, 기타 사용자는 디렉토리를 읽고 진입할 수만 있음 (r-x) 을 보여줍니다. 이를 research 팀을 위한 적절한 협업 폴더로 만들려면 먼저 디렉토리의 그룹 소유권을 research로 변경해야 합니다.

sudo chown :research RandD

다음으로, 소유자 (labex) 와 그룹 (research) 모두에게 전체 제어 권한을 부여하는 동시에 기타 사용자의 액세스를 완전히 제거하도록 권한을 설정합니다. 원하는 권한은 rwxrwx---이며, 이는 8 진수 코드 770에 해당합니다. 디렉토리의 소유자이므로 sudo를 사용하지 않고도 권한을 변경할 수 있습니다.

chmod 770 RandD

마지막으로 변경 사항을 확인해 보겠습니다.

ls -ld RandD

이제 출력 결과에 새로운 소유권과 권한이 반영되어 팀을 위해 디렉토리가 안전하게 보호된 것을 볼 수 있습니다.

drwxrwx--- 2 labex research 28 Jun 26 10:36 RandD

이제 사용자 labexresearch 그룹의 모든 구성원은 RandD 디렉토리에 대해 전체 읽기, 쓰기, 실행 권한을 가지며, 다른 모든 사용자는 액세스할 수 없습니다. 안전한 협업 공간을 성공적으로 구성했습니다.

요약

이 실습에서는 리눅스 환경에서 작업 공간을 준비하는 기본 단계를 배웠습니다. 여기에는 mkdir 명령어를 사용한 새 디렉토리 생성, cd를 이용한 이동, 그리고 touch를 사용한 빈 파일 생성이 포함되었습니다. 또한 ls -l 명령어를 사용하여 새로 생성된 파일의 상세 속성을 조사하고, 기본 소유자, 그룹 및 권한 설정을 관찰함으로써 이후의 관리 작업을 위한 토대를 마련했습니다.

이러한 기초를 바탕으로 리눅스 파일 시스템 보안의 핵심 개념을 탐구했습니다. 실습을 통해 chown 명령어로 파일의 소유권을 변경하여 제어권을 다른 사용자나 그룹으로 이전하는 방법을 확인했습니다. 그런 다음 chmod 명령어를 사용하여 소유자, 그룹 및 기타 사용자에 대한 읽기, 쓰기, 실행 권한을 수정하는 방법을 익혔습니다. 마지막으로, 이러한 권한 개념을 디렉토리에 구체적으로 적용하여 그 안에 포함된 파일에 대한 액세스를 제어하는 방법을 다루었습니다.