상세 컨텐츠

본문 제목

Linux File Permission 리눅스 파일 시스템 권한

🔘 OS

by chnh 2023. 5. 2. 17:45

본문

반응형

시스템의 보안, 무결성 및 기능을 유지하기 위해서 Linux File Permission에 대해 이해하고 적절히 관리할 수 있어야한다. 필요한 사용자만 액세스 할 수 있도록 제한하여 데이터의 유출이나 무단 수정 등의 위험으로 부터 중요한 데이터를 보호할 수 있다. 이 글에서는 Linux에서 파일 권한 및 소유권이 적용되는 방식에 대해 설명하고 명령어를 사용하여 파일 권한 및 소유권을 관리하는 방법에 대해 알아본다.

 

 

1.  파일 권한, 소유자, 그룹

여기서 말하는 '권한'이란 파일이나 디렉터리에 대해 사용자나 그룹이 가지는 권리를 말한다. 이 권리에는 읽을 수 있는 권리, 쓸 수 있는 권리, 실행할 수 있는 권리가 있다. 그리고 각 권리를 각 사용자 범주에 할당할 수 있다. 사용자 범주에 할당된 권리들, 즉 권한은 영숫자표현(rwx)이나 숫자(0-7)로 표현된다.

 

권한

  • r: 읽기 가능 (Readable)
  • w: 쓰기 가능 (Writable)
  • x: 실행 가능 (eXecutable)
  • '-': 불가능

참고: 디렉토리의 경우 읽기/쓰기/실행이 약간 다른 의미를 가진다.

읽기가 설정되어 있지 않으면 디렉토리 내부에 있는 내용을 나열(ls)할 수 없다.
쓰기가 설정되어 있지 않으면 디렉토리 또는 그 하위 디렉터리를 삭제하거나 만들 수 없다.
실행이 설정되어 있지 않으면 해당 디렉토리로 cd나 ls, find 등의 명령을 실행할 수 없다.

 

사용자 범주

  • User: 파일 또는 디렉토리를 생성한 사용자, 소유자
  • Group: 파일 또는 디렉토리에 대해 동일한 액세스 권한을 공유하는 사용자 그룹
  • Other: 소유자나 그룹 카테고리에 속하지 않는 사용자

 

권한 확인 방법

그리고 이런 파일 권한과 소유자 정보는 다음 명령어를 통해 확인할 수 있다.

ls -l

위 명령어를 처음 실행해 봤다면 첫 번째 컬럼에 나오는 암호 같은 글자(예를들면-rwxr-xr-x 같은것..)에 조금 당황했을 수 있다. 이 부분이 파일 권한을 나타내는 부분으로, 가장 왼쪽 글자는 파일의 종류, 나머지 9글자는 권한을 나타낸다.

 

 

영문으로 표현된 권한들을 숫자로 표시할 수도 있다. 각 사용자 범주에 대한 권한을 한자리 숫자로 결합한다. User에 대한 권한, Group에 대한 권한, Other에 대한 권한이 각각 하나의 숫자로 통합되어 총 3자리 숫자로 표현된다.

 

이 표현 방식은 바이너리 관점에서 보면 쉽게 이해할 수 있다. 각 자리에 권한이 있으면 1이, 없으면 0이 표시된다고 생각해보자. 실행 권한이 활성화되면 십진수 값은 1(001), 쓰기 권한은 2(010), 읽기 권한은 4(100)가 된다. 모든 권한이 활성화되면 7(111)이 되는 것이다.

 

 

ls -l 명령어를 통해 파일 권한과 소유권을 확인할 수 있다. 존재하는 파일이나 디렉터리의 권한을 하나씩 살펴보면서 알아보자.

총 7개의 컬럼이 표시된다. 첫번째 컬럼에 집중해서 확인해보자.

각 컬럼은 왼쪽부터 파일 권한, 하드 링크 수, 소유자, 그룹, 파일 크기, 수정 시간, 파일/디렉토리 이름에 대한 정보를 제공한다. 위 출력에서 가장 첫번 째 행을 예를 들어 살펴보면, drawio라는 폴더의 권한 정보는 drwxr-xr-x으로 표시된 것을 알 수 있다.

  • d: 디렉토리임을 나타낸다.
  • rwx: 파일 소유자는 읽기(r), 쓰기(w) 및 실행(x) 권한이 있다.
  • r-x: 그룹에 읽기(r) 및 실행(x) 권한이 있지만 쓰기 권한은 없다.
  • r-x: 다른 사람(소유자 또는 그룹 아님)은 읽기(r) 및 실행(x) 권한이 있지만 쓰기 권한은 없다.

rwx, r-x, r-x 권한이 있으므로 숫자로 표시하면 755가 된다. 755라는 숫자만 보고도 User 설정은 7, Group과 Other에게는 쓰기를 허용하지 않았음을 유추할 수 있다.

 

2.  권한 설정

앞서 Linux에서 파일 권한을 영문과 숫자로 표현하는 방법을 살펴봤다. 이번 파트에서는 chmod와 같은 명령을 사용해서 권한을 설정하는 방법에 대해 알아보자. 관련된 명령어는 다음과 같은 것들이 있다.

  1. chmod: 파일 또는 디렉토리의 권한을 변경
  2. chown: 파일 또는 디렉토리의 소유자를 변경
  3. chgrp: 파일 또는 디렉토리의 그룹을 변경
  4. umask: 새로운 파일 및 디렉토리의 권한을 지정
  5. su: 다른 사용자로 전환

 

1. chmod: 파일 또는 디렉토리의 권한을 변경

chmod [옵션] [권한] [파일 또는 디렉토리]
  • 옵션: chmod 명령어는 여러 옵션을 제공한다. (일반적으로 R 옵션을 사용하여 디렉토리와 하위 파일 및 디렉토리의 권한을 변경한다.)
  • 권한: chmod 명령어를 사용하여 변경할 권한을 지정하는 부분이다. 기호 표기법(예: u+x ) 또는 8진수 표기법(예: 755)을 사용하여 권한을 설정할 수 있다.
    • 기호로 권한을 지정하는 경우
      • u는 소유자, g는 그룹, o는 기타 사용자
      • +는 권한을 추가하고, -는 권한을 제거
      • 예를들어 chmod u+x script.sh 라는 명령은 파일의 소유자에게 실행 권한을 추가하겠다는 뜻이다.
  • 파일 또는 디렉토리: 권한을 변경할 파일 또는 디렉토리의 경로를 지정한다.

test.txt라는 파일에서 읽기 권한을 제거하고 실제로 파일을 읽을 수 없는지 테스트해보자.

read,write 권한이 있는 상태로 cat 명령어로 파일을 읽을 수 있다.

chmod u-r 명령으로 읽기 권한을 제거해봤다.

read 권한이 없어 permission denied가 표시되는 것을 확인할 수 있다.

 

2 .chown: 파일 또는 디렉토리의 소유자를 변경

chown [new_owner]:[new_group] [file/directory]

예시

# 이 명령은 myfile.txt의 소유자를 사용자 'john'으로 변경한다. 
chown john myfile.txt
# 이 명령은 myfile.txt의 소유자를 사용자 'john'으로, 그룹을 'developers'로 변경한다.
chown john:developers myfile.txt

 

3 .chgrp: 파일 또는 디렉토리의 그룹을 변경

예시

chgrp [new_group] [file/directory]

 


 

참고자료

반응형

댓글 영역