리눅스 퍼미션(Permission)

한눈에 보기

파일과 디렉터리에 소유자, 그룹, 기타 사용자별로 읽기, 쓰기, 실행 권한을 부여하는 리눅스 접근 제어 방식을 다룬다. 8진수 표기, chmod와 umask, setuid와 스티키 비트까지 정리한다.

최종 업데이트 2026.09.17

리눅스 퍼미션(Permission)은 파일과 디렉터리마다 소유자, 그룹, 그 외 사용자라는 세 주체에게 읽기, 쓰기, 실행 권한을 개별적으로 부여하는 접근 제어 방식이다. 리눅스는 여러 사용자가 동시에 쓰는 다중 사용자(Multi-user) 운영체제이므로, 퍼미션은 시스템 보안과 자원 보호의 가장 기본이 되는 장치다. 이 문서는 권한 표기법과 변경 명령어, 특수 권한까지 순서대로 정리한다.

권한의 구조: 세 주체와 세 동작

ls -l을 실행하면 각 파일 앞에 -rwxr-xr-- 같은 10글자 문자열이 보인다. 첫 글자는 파일 종류로, -는 일반 파일, d는 디렉터리, l은 심볼릭 링크(Symbolic Link)를 뜻한다. 나머지 아홉 글자는 세 글자씩 끊어서 소유자(user), 그룹(group), 기타 사용자(others)의 권한을 나타낸다.

기호이름파일에서의 의미디렉터리에서의 의미
r읽기(read)내용을 읽을 수 있다목록(파일 이름들)을 볼 수 있다
w쓰기(write)내용을 수정할 수 있다안에서 파일을 생성, 삭제, 이름 변경할 수 있다
x실행(execute)프로그램으로 실행할 수 있다디렉터리 안으로 진입(cd)할 수 있다

주의할 점은 파일 삭제 권한이 파일 자신이 아니라 파일이 들어 있는 디렉터리의 w 권한으로 결정된다는 것이다. 파일에 쓰기 권한이 없어도 디렉터리에 쓰기 권한이 있으면 그 파일을 지울 수 있다. 또 디렉터리는 x가 없으면 r이 있어도 내부 파일에 접근할 수 없다.

8진수 표기법

권한은 문자 대신 8진수 세 자리로도 표현한다. 읽기는 4, 쓰기는 2, 실행은 1의 값을 갖고, 각 주체별로 이 값을 더한 숫자를 나란히 쓴다. 예를 들어 rwxr-xr--는 소유자 4+2+1=7, 그룹 4+1=5, 기타 4이므로 754가 된다.

8진수문자 표기대표 용도
755rwxr-xr-x실행 파일, 공개 디렉터리
644rw-r--r--일반 문서, 설정 파일
600rw-------개인 키, 비밀 설정 파일
777rwxrwxrwx모든 권한 개방, 보안상 피해야 한다

권한 변경 명령어: chmod, chown, umask

권한 자체는 chmod로, 소유자와 그룹은 chown과 chgrp로 바꾼다. chmod는 8진수 방식 외에 기호 방식도 지원하는데, 주체(u, g, o, a)와 연산자(+, -, =)와 권한(r, w, x)을 조합한다.

명령어설명자주 쓰는 옵션
chmod파일이나 디렉터리의 권한을 변경한다-R 하위까지 재귀 적용
chown소유자(와 그룹)를 변경한다-R 재귀 적용, user:group 형태로 동시 지정
chgrp그룹만 변경한다-R 재귀 적용
umask새 파일의 기본 권한에서 뺄 마스크를 확인하거나 설정한다인자 없이 실행하면 현재 값 출력
chmod 600 ~/.ssh/id_rsa
chmod u+x deploy.sh
chmod -R g-w /var/www/html
chown -R appuser:appgroup /opt/app
umask 022

umask는 새로 만들어지는 파일의 기본 권한을 결정한다. 파일의 최대 권한 666, 디렉터리의 최대 권한 777에서 umask 값을 뺀 결과가 실제 기본 권한이 된다. umask가 022라면 새 파일은 644, 새 디렉터리는 755로 생성된다.

특수 권한: setuid, setgid, sticky bit

기본 아홉 비트 외에 세 가지 특수 비트가 있으며, 8진수 표기에서는 맨 앞에 한 자리를 더해 표현한다. setuid는 4, setgid는 2, 스티키 비트(Sticky Bit)는 1이다.

  • setuid: 실행 파일에 붙으면 실행하는 동안 프로세스가 파일 소유자의 권한으로 동작한다. 일반 사용자가 passwd 명령으로 루트 소유의 비밀번호 파일을 갱신할 수 있는 이유가 바로 이 비트다. 소유자 실행 자리에 x 대신 s로 표시된다.
  • setgid: 실행 파일에서는 그룹 권한으로 실행되게 하고, 디렉터리에 붙으면 그 안에 만들어지는 파일이 디렉터리의 그룹을 상속한다. 팀 공유 디렉터리에서 유용하다.
  • sticky bit: 디렉터리에 붙으면 쓰기 권한이 있어도 자기 소유가 아닌 파일은 지울 수 없게 된다. 모두가 쓰는 /tmp 디렉터리가 대표적이며, 기타 사용자 실행 자리에 t로 표시된다.
chmod 4755 /usr/local/bin/mytool
chmod 2775 /srv/shared
chmod 1777 /tmp
ls -ld /tmp

setuid가 붙은 프로그램은 권한 상승 취약점의 통로가 될 수 있으므로, 시스템에 불필요한 setuid 파일이 없는지 주기적으로 점검하는 것이 보안 관례다.

실무에서의 활용과 주의점

권한 문제로 자주 겪는 상황은 세 가지다. 첫째, SSH 접속이 거부될 때는 개인 키 파일이 600인지, .ssh 디렉터리가 700인지 확인한다. SSH는 키 파일 권한이 느슨하면 아예 사용을 거부한다. 둘째, 웹 서버가 파일을 못 읽을 때는 파일 권한뿐 아니라 상위 디렉터리 경로 전체에 x 권한이 있는지 봐야 한다. 셋째, 권한 오류를 chmod 777로 덮는 습관은 모든 사용자에게 수정 권한을 열어 주는 것이므로 원인을 찾아 필요한 최소 권한만 부여하는 최소 권한 원칙(Principle of Least Privilege)을 지켜야 한다. 더 세밀한 제어가 필요하면 사용자나 그룹 단위로 예외를 추가할 수 있는 접근 제어 목록(ACL, Access Control List)을 setfacl로 설정할 수도 있다.

면접에서 이렇게 물어본다

  • ls -l 출력의 -rwxr-x---를 해석하고 8진수로 변환해 보라는 질문이 기본으로 나온다.
  • 디렉터리의 r, w, x 권한이 파일의 그것과 어떻게 다른 의미를 갖는지 묻는다.
  • 일반 사용자가 passwd로 루트 소유 파일을 수정할 수 있는 원리를 setuid와 연결해 설명하라는 질문을 받는다.
  • /tmp에 스티키 비트가 걸려 있는 이유와 없을 때 생기는 문제를 묻는다.
  • umask 022일 때 새로 생성되는 파일과 디렉터리의 권한이 각각 무엇인지 계산해 보라고 한다.
리눅스 문서 전체 보기

이 개념, 내 코드에서는 어떻게 물어볼까요

데브핏(DevFit)에 채용공고 URL을 붙여 넣고 레포지토리를 연결하면, 내가 쓴 커밋에서 예상 질문과 어필 포인트를 만듭니다. 하루 10회까지 무료입니다. 합불 판정이나 지원자 랭킹은 만들지 않고, 최종 판단은 사람이 합니다.

공고 넣고 시작하기