[우분투 24.04 LTS] 리눅스 파일 소유권(chown) 및 접근 권한(chmod) 시스템 이해

리눅스(Linux) 운영체제는 태생적으로 다중 사용자(Multi-User) 환경을 전제로 설계되었다. 따라서 시스템 인프라 및 데이터 보안의 근간은 각 파일과 디렉터리에 부여된 ‘소유권(Ownership)’과 ‘접근 권한(Permission)’을 엄격하게 통제하는 데 있다.

본 문서는 우분투 서버 환경에서 시스템 보안을 유지하기 위한 필수 개념인 파일 권한의 논리적 구조를 분석하고, 이를 제어하는 chmodchown 명령어의 실무 적용 방법을 기술한다.

1. 리눅스 권한 체계의 기본 구조 분석

서버 터미널에서 파일 및 디렉터리의 상세 정보를 조회하는 ls -l 명령어를 실행하면, 각 항목의 좌측에 -rwxr-xr-x와 같은 10자리의 권한 문자열이 출력된다. 이 문자열은 시스템의 접근 제어 상태를 나타내는 핵심 지표이다.

첫 번째 문자는 파일의 유형을 의미하며(-는 일반 파일, d는 디렉터리), 이어지는 9개의 문자는 3개씩 끊어 다음의 대상에게 부여된 권한을 명시한다.

  1. User (소유자): 파일이나 디렉터리를 생성한 사용자 본인
  2. Group (소유 그룹): 소유자가 속한 특정 사용자 그룹
  3. Others (기타 사용자): 소유자도 아니고 소유 그룹에도 속하지 않은 제3자

각 대상에게는 다음 3가지의 물리적 권한이 부여되거나 제한된다.

  • r (Read, 읽기): 파일의 내용을 보거나, 디렉터리 내의 파일 목록을 조회할 수 있는 권한
  • w (Write, 쓰기): 파일의 내용을 수정하거나, 디렉터리 내에 파일을 생성 및 삭제할 수 있는 권한
  • x (Execute, 실행): 파일을 프로그램처럼 실행하거나, 디렉터리 내부로 진입(cd)할 수 있는 권한 (- 기호는 권한 없음을 의미)

2. 접근 권한 변경 명령어: chmod (Change Mode)

chmod는 파일 및 디렉터리의 읽기, 쓰기, 실행 권한을 변경하는 시스템 명령어이다. 실무에서는 직관적이고 연산이 빠른 8진수(Octal) 숫자 모드를 표준으로 사용한다.

각 권한은 고유한 숫자 값을 가지며, 이를 합산하여 권한을 부여한다.

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

즉, 소유자에게 모든 권한을 주려면 4+2+1인 7, 읽기와 실행 권한만 주려면 4+1인 5, 읽기 권한만 주려면 4를 부여한다. 이를 User, Group, Others 순서대로 세 자리 숫자로 조합하여 명령어를 구성한다.

실무 표준 권한 부여 적용

리눅스 서버 운영 시 보안과 효율성을 동시에 충족하는 시스템 표준 권한 설정은 다음과 같다.

디렉터리 표준 권한 (755) 소유자는 모든 권한을 가지며, 그룹과 기타 사용자는 읽고 진입(실행)만 가능하도록 설정한다.

Bash

sudo chmod 755 디렉터리명

일반 파일 표준 권한 (644) 소유자는 읽고 쓸 수 있으며, 그룹과 기타 사용자는 읽기만 가능하도록 설정하여 파일 변조를 방지한다.

Bash

sudo chmod 644 파일명

3. 파일 및 디렉터리 소유권 변경 명령어: chown (Change Owner)

chown은 파일이나 디렉터리의 소유자(User)와 소유 그룹(Group)을 변경하는 명령어이다. 주로 최고 관리자(root) 권한으로 생성된 파일을 일반 사용자나 특정 서비스 데몬(Daemon)이 제어할 수 있도록 권한을 이관할 때 사용된다.

명령어는 chown 소유자명:그룹명 대상파일명의 구조로 작성된다. 특정 사용자의 데이터를 복원하거나 서비스 권한을 부여할 때 필수적으로 사용된다.

단일 파일 소유권 변경

Bash

sudo chown ubuntu:ubuntu target_file.txt

하위 디렉터리 일괄 적용 (-R 옵션) 특정 디렉터리 및 그 내부에 존재하는 모든 파일과 하위 폴더의 소유권을 일괄적으로 변경할 때는 -R (Recursive) 옵션을 반드시 추가해야 한다. 웹 서버(Nginx, Apache)가 웹 디렉터리에 접근할 수 있도록 소유권을 www-data로 이관하는 실무 명령어는 다음과 같다.

Bash

sudo chown -R www-data:www-data /var/www/html/

4. 시스템 보안을 위한 권한 관리 원칙

서버 내 데이터 위변조 및 악성 스크립트 실행을 방지하기 위해 ‘최소 권한의 원칙(Principle of Least Privilege)’을 준수해야 한다.

특정 서비스나 파일이 작동하지 않는다는 이유로 원인 분석 없이 무분별하게 chmod 777 (모든 사용자에게 모든 권한 부여) 명령어를 남용하는 것은 시스템 보안을 포기하는 것과 같다. 777 권한이 부여된 파일은 외부 공격자가 시스템에 침투하여 악성 코드를 주입하고 실행할 수 있는 백도어(Backdoor)로 악용될 수 있으므로 운영 서버에서의 사용을 엄격히 금지해야 한다.

마무리

리눅스 환경에서 파일과 디렉터리를 보호하는 가장 원초적이고 강력한 수단인 chmodchown 명령어의 개념 및 실무 적용 방안을 확립하였다. 방화벽, Fail2ban에 이어 내부 파일 시스템 접근 제어 체계까지 이해함으로써 인프라 보안의 핵심 계층이 완성되었다.

서버의 내부 보안 설정이 완료되었으므로, 다음 포스팅에서는 웹 서비스 호스팅 시 클라이언트와 서버 간의 통신을 암호화하여 데이터 유출을 방지하는 [Nginx 웹 서버 Let’s Encrypt 무료 SSL 인증서 발급 및 자동 갱신 설정] 프로세스에 대해 다루겠다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다