Linux Enginner

리눅스의 대한 모든 지식들을 공유하고 배울 수 있는 블로그입니다.

리눅스에서 파일 권한 이해하기

 

리눅스를 사용하다 보면 파일과 디렉토리의 접근 권한을 설정하는 일이 필수적이다. 파일 권한이란 특정 사용자가 파일을 읽고, 수정하고, 실행할 수 있도록 허용하는 규칙을 의미한다. 왜 이런 설정이 필요할까?

리눅스는 멀티유저 운영체제이기 때문에 여러 사용자가 동시에 시스템을 사용할 수 있다. 만약 파일 권한을 올바르게 설정하지 않으면, 불필요한 접근으로 인해 보안 문제가 발생할 수 있다. 예를 들어 중요한 시스템 파일을 누구나 수정할 수 있다면, 시스템이 손상되거나 해킹에 노출될 위험이 커진다. 따라서 리눅스에서는 사용자별로 적절한 파일 권한을 부여하여 보안을 유지하는 것이 필수적이다.


1. 리눅스 파일 권한의 기본 개념

리눅스에서 파일 권한을 이해하려면, 먼저 사용자(User), 그룹(Group), 기타(Others) 개념을 알아야 한다.

  • 사용자(User, u): 파일을 소유한 특정 사용자
  • 그룹(Group, g): 파일이 속한 사용자 그룹
  • 기타(Others, o): 위 두 범주에 속하지 않는 모든 사용자

파일 권한은 세 가지 유형으로 나뉜다.

  • 읽기(Read, r): 파일 내용을 읽을 수 있음
  • 쓰기(Write, w): 파일을 수정하거나 삭제할 수 있음
  • 실행(Execute, x): 실행 가능한 프로그램이나 스크립트 실행 가능

이러한 권한은 사용자, 그룹, 기타 사용자에 대해 각각 설정되며, 이를 조합하여 파일에 대한 접근을 제어한다.


2. 파일 권한 확인 방법

리눅스에서 파일의 권한을 확인하려면 ls -l 명령어를 사용한다.

ls -l filename

출력 예시는 다음과 같다.

-rwxr-xr-- 1 user group 1234 Mar 15 10:00 example.sh

각 부분을 분석하면 다음과 같다.

  • -rwxr-xr-- → 파일 유형 및 권한 정보
  • 1 → 하드 링크 수
  • user → 파일 소유자
  • group → 파일 소유 그룹
  • 1234 → 파일 크기(바이트)
  • Mar 15 10:00 → 파일의 최근 수정 날짜
  • example.sh → 파일 이름

특히 첫 번째 문자들은 파일 권한을 나타내며, 첫 글자는 파일 유형을 의미한다.

  • - : 일반 파일
  • d : 디렉토리
  • l : 심볼릭 링크

이후 9자리는 rwx 형태로 사용자별 권한을 나타낸다.

  • rwx → 소유자(User)의 권한 (읽기, 쓰기, 실행)
  • r-x → 그룹(Group)의 권한 (읽기, 실행)
  • r-- → 기타(Others)의 권한 (읽기만 가능)

3. 파일 권한 변경 방법

파일 권한을 변경하려면 chmod 명령어를 사용한다.

(1) 기호 방식(알파벳)으로 변경

다음과 같이 사용한다.

chmod u+x example.sh  # 사용자(User)에게 실행 권한 추가
chmod g-w example.sh  # 그룹(Group)에서 쓰기 권한 제거
chmod o+r example.sh  # 기타(Others)에게 읽기 권한 부여

(2) 숫자 방식으로 변경

숫자로 된 3자리 코드를 사용하여 설정할 수도 있다.

  • r = 4, w = 2, x = 1
  • 조합하여 설정 가능 (예: rwx = 7, rw- = 6)

예제:

chmod 755 example.sh  # 사용자 7(rwx), 그룹 5(r-x), 기타 5(r-x)
chmod 644 example.txt # 사용자 6(rw-), 그룹 4(r--), 기타 4(r--)

4. 파일 소유권 변경 방법

(1) chown 명령어로 파일 소유자 변경

chown newuser example.sh  # example.sh의 소유자를 newuser로 변경

(2) chgrp 명령어로 파일 그룹 변경

chgrp newgroup example.sh  # example.sh의 그룹을 newgroup으로 변경

5. 특수 권한과 고급 파일 권한 개념

리눅스에서는 특정한 상황에서 사용되는 특수 권한(SUID, SGID, Sticky Bit) 가 존재한다.

(1) SUID (Set User ID)

  • 실행할 때 해당 파일의 소유자 권한을 가짐
  • 일반적으로 루트 권한이 필요한 프로그램에 사용됨
  • 설정 방법:
chmod u+s example.sh

(2) SGID (Set Group ID)

  • 실행할 때 해당 파일의 그룹 권한을 상속
  • 특정 그룹의 사용자가 동일한 권한을 유지하도록 설정
  • 설정 방법:
chmod g+s example.sh

(3) Sticky Bit

  • 디렉토리 내에서 소유자만 파일을 삭제할 수 있도록 제한
  • 보안이 필요한 /tmp 같은 공유 디렉토리에 사용됨
  • 설정 방법:
chmod +t /shared_directory

마무리하며

리눅스 파일 권한을 적절히 관리하면 시스템 보안을 강화하고, 불필요한 접근을 차단할 수 있다. 초보자라면 먼저 ls -l 명령어를 통해 현재 파일 권한을 확인하는 것부터 시작하고, chmod, chown 같은 기본적인 명령어를 익히는 것이 중요하다.

파일 권한 설정은 단순한 기능이지만, 제대로 활용하면 강력한 보안 수단이 된다. 리눅스를 더욱 효과적으로 사용하려면 파일 권한 개념을 확실히 이해하고 활용해보자!