파일 권한(퍼미션)란?
Linux 등에서 파일이나 디렉터리마다 소유자(user)·그룹(group)·기타(others) 각각에 읽기(r)·쓰기(w)·실행(x)을 허용할지를 정한 설정. ls -l에서는 rwxr-xr--처럼, chmod에서는 754 같은 8진수(r = 4, w = 2, x = 1의 합계)로도 나타낸다. 새로 만드는 파일의 권한은 umask로 정해진다. root(슈퍼유저)는 일반적으로 이 제한을 받지 않고 파일을 읽고 쓸 수 있다.
일본어 명칭: パーミッション
파일 권한(퍼미션)은(는) Linux와 커맨드 라인 기초 등 1개 분야의 연습 문제 2개에 나와요.
분야: Linux와 커맨드 라인 기초
표기 읽는 법
ls -l의 맨 앞 10문자는 첫 문자가 파일의 종류(-는 일반 파일, d는 디렉터리, l은 심볼릭 링크)이고, 이어지는 3문자씩이 소유자, 그룹, 기타의 권한입니다. 8진수에서는 각 자리가 r = 4, w = 2, x = 1의 합계이므로 rwxr-xr--는 754, rw-r--r--는 644가 됩니다. chmod 754 file처럼 수로 지정하는 것 외에, chmod g+w file이나 chmod o-r file처럼 기호로 일부만 바꿀 수도 있습니다.
특수 비트와 umask
실행했을 때 소유자의 권한으로 동작시키는 setuid(소유자의 x 위치가 s), 그룹의 권한으로 동작시키는 setgid, 앞에서 말한 스티키 비트가 있으며, 8진수에서는 각각 4000, 2000, 1000의 자리로 나타냅니다. 새 파일은 666, 디렉터리는 777에서 umask의 비트를 제거한 권한으로 만들어지며, umask 022라면 파일은 644, 디렉터리는 755가 됩니다.
자주 묻는 질문
chmod 777로 하면 문제가 해결되나요?
'Permission denied'는 사라지더라도 누구나 고쳐 쓰거나 실행할 수 있는 상태가 되어, 다른 사용자나 프로그램이 내용을 바꿀 우려가 있습니다. 먼저 어느 사용자가 어떤 조작을 할 수 있어야 하는지 확인하고, 소유자나 그룹을 chown·chgrp로 맞춘 다음, 필요한 권한만 붙이는 것이 기본입니다.
공유 서버에서 팀 구성원에게만 파일을 읽게 하려면 어떻게 하나요?
팀용 그룹을 만들어 구성원을 추가하고, 파일이나 디렉터리의 그룹을 그 그룹으로 한 다음, 그룹에는 r(디렉터리에는 r과 x)을, 기타에는 아무것도 주지 않는 설정(파일이라면 640, 디렉터리라면 750 등)으로 합니다. 사람마다 세세하게 정하고 싶은 경우에는 ACL(setfacl·getfacl)을 사용하는 방법도 있습니다.