리눅스 파일 권한 체계 쉽게 이해하기

작성자

카테고리:

왜 파일 권한이 중요한가

리눅스는 다중 사용자 운영체제다. 여러 사용자가 동시에 시스템에 접속하여 작업할 수 있다. 이때 A 사용자의 파일을 B 사용자가 마음대로 읽거나 삭제할 수 있다면 보안 사고가 끊이지 않을 것이다. 리눅스의 파일 권한 체계는 누가 어떤 파일에 대해 무엇을 할 수 있는지를 세밀하게 제어하는 시스템이다. 서버 운영에서 권한 설정 실수는 보안 취약점으로 직결되므로 이 체계를 정확히 이해하는 것이 필수다.

소유자, 그룹, 기타

리눅스에서 모든 파일과 디렉토리에는 세 가지 접근 주체가 정의된다. 소유자(Owner)는 파일을 생성한 사용자다. 그룹(Group)은 소유자가 속한 그룹이며, 같은 그룹에 속한 다른 사용자들의 접근 권한을 정의한다. 기타(Others)는 소유자도 아니고 해당 그룹에도 속하지 않는 나머지 모든 사용자를 의미한다. ls -l 명령어로 파일 목록을 조회하면 -rwxr-xr– 형태의 권한 문자열이 표시되는데, 이 10자리가 파일 유형(1자리)과 세 주체의 권한(각 3자리)을 나타낸다.

읽기, 쓰기, 실행

각 주체에게 부여할 수 있는 권한은 세 가지다. 읽기(r, Read)는 파일의 내용을 읽을 수 있는 권한이다. 디렉토리에 대해서는 디렉토리 내 파일 목록을 조회할 수 있는 권한을 의미한다. 쓰기(w, Write)는 파일을 수정하거나 삭제할 수 있는 권한이다. 디렉토리에 대해서는 해당 디렉토리 안에 파일을 생성하거나 삭제할 수 있는 권한이다. 실행(x, Execute)은 파일을 프로그램으로 실행할 수 있는 권한이다. 디렉토리에 대해서는 해당 디렉토리에 진입(cd)할 수 있는 권한이다.

숫자 표기법

권한은 숫자로도 표현된다. r=4, w=2, x=1이며, 이를 합산하여 한 자릿수로 나타낸다. rwx=7, rw-=6, r-x=5, r–=4, —=0이다. 세 주체의 권한을 순서대로 나열하면 755, 644 같은 3자리 숫자가 된다. chmod 755 script.sh는 소유자에게 읽기+쓰기+실행(7), 그룹에게 읽기+실행(5), 기타에게 읽기+실행(5)을 부여하는 명령이다. 644는 소유자가 읽기+쓰기, 나머지는 읽기만 가능한 권한으로 일반 파일의 기본값으로 많이 사용된다.

실무에서 흔한 권한 설정

웹서버에서 정적 파일은 644, 디렉토리는 755가 표준이다. 실행 스크립트는 755로 설정한다. 비밀 키 파일(SSH 개인 키, SSL 키 파일)은 600으로 소유자만 읽고 쓸 수 있게 제한한다. 777은 모든 사용자에게 모든 권한을 부여하는 것으로, 보안상 절대 사용하지 않는 것이 원칙이다. 웹 디렉토리를 777로 설정하면 외부 공격자가 악성 파일을 업로드하고 실행할 수 있는 경로가 열린다.

특수 권한

기본 rwx 외에 setuid, setgid, sticky bit라는 특수 권한이 존재한다. setuid가 설정된 실행 파일은 실행 시 파일 소유자의 권한으로 동작한다. passwd 명령어가 대표적이다. 일반 사용자가 실행해도 root 권한으로 /etc/shadow를 수정할 수 있는 이유가 setuid 때문이다. sticky bit는 디렉토리에 설정하면 해당 디렉토리 내 파일은 파일 소유자만 삭제할 수 있게 한다. /tmp 디렉토리에 기본 적용되어 있다.

리눅스권한 #chmod #파일권한 #리눅스보안 #rwx #setuid #서버보안 #리눅스기초 #파일시스템 #서버운영

코멘트

답글 남기기

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