리눅스는 multi user 시스템이기 때문에 여러 사용자가 파일을 공동으로 사용할 수 있습니다.
그런데 자신의 비밀 파일을 다른 누군가가 접근하는 것은 원치 않을 수 있으며,
또는 어떤 파일을 다른 사용자가 읽기는 할 수 있지만, 수정하는 것은 원치 않을 수 있습니다.
그래서 파일에 대한 접근 주체를 소유자, 소유그룹, 기타로 구분 지어서, 각 대상에 대해 읽기, 쓰기, 실행 권한을 부여할 수 있도록 했습니다.
즉 누가 파일에 접근해도 되는지, 접근해서 무엇을 할 수 있는 지를 결정하는 것을 파일 권한 (permission)이라 합니다.
권한은 보안적으로 매우 중요하므로 꼭 이해하고 있어야 합니다.
ls -l 명령어를 입력했을 때 가장 앞에 있는 rwx 가 바로 권한입니다.
정확하게는 파일 타입 / 소유자 / 소유 그룹 / 기타 에 대한 r( 읽기 ), w( 쓰기 ), x( 실행 ) 권한을 의미합니다.
예를들어 drwxr-xr-x 의 경우에는 d / rwx / r-x / r-x 와 같이 나눌 수 있습니다.
이제 각각이 무엇을 의미하는지 살펴보겠습니다.
파일 타입
가장 앞에 있는 문자는 파일 타입으로 아래와 같습니다.
- : 일반(보통) 파일
b : 블록 디바이스 파일
c : 문자열 디바이스 파일
d : 디렉토리
l : 심볼릭 링크
p 또는 = : 명명된 파이프(named pipe) / FIFO
s : 소켓(socket)
권한
파일 타입을 제외한 9개의 rwx에 대해 3개씩 끊으면 순서대로 소유자, 소유 그룹, 제 3자(기타)에 대한 권한을 나타냅니다.
rwx의 의미는 다음과 같습니다.
r : 읽기 권한
w : 쓰기 권한
x : 접근 권한
rwx 간에도 규칙이 있습니다.
접근을 할 수 있어야 파일 및 디렉터리를 읽을 수 있고, 읽을 수 있어야 쓰기가 가능하다는 것입니다.
x -> r -> w
이제 권한을 읽는 방법에 대해 알아보겠습니다.
예를들어 파일의 권한이 r w - r - - r - - 일 경우,
파일의 소유자는 읽고, 쓸 수 있는 권한이 있고,
파일의 소유 그룹에 해당하는 유저들은 읽기만 가능하며,
그 외 제3자도 읽기만 가능합니다.
rw-r--r--은 간단히 644와 같이 Numeric으로 표현합니다.
r w - : 6 ( = 4 + 2 + 0 )
r - - : 4 ( = 4 + 0 + 0 )
r - - : 4 ( = 4 + 0 + 0 )
한 주체에 대해 r w x의 각 자리는 2의 거듭제곱으로 표현합니다.
리눅스 명령어 실행 도중 permission denied 에러가 발생하면, 실행 주체에 대해 파일의 권한을 확인해야 합니다.
허가권 변경
파일의 권한을 변경하는 명령어는 chmod 입니다.
# chmod 755 파일명
# chmod -R 755 디렉터리명
755는 rwxr-xr-x를 의미하므로, 해당 파일의 소유 권한을 rwxr-xr-x로 변경하는 명령어입니다.
만약 디렉터리의 내의 모든 파일의 소유권을 변경하고 싶다면 –R 옵션을 추가하면 됩니다.
소유권 변경
파일의 소유권을 양도하는 명령어는 chown 입니다.
# chown foo.goo 파일명
해당 파일의 소유권을 foo 유저에게, goo 그룹에게 양도하는 명령어입니다.
이상으로 리눅스에서 파일의 권한에 대해 알아보았습니다.
파일에 접근할 수 있는 주체는 소유자, 소유그룹, 제3 자로 나눌 수 있고 각각 읽고, 쓰고, 실행할 수 있는 권한을 알맞게 부여할 수 있습니다.
보안적으로 권한은 매우 중요하기도 하고, 서버 운영 면에서 권한에 대해 꼭 알고 있어야 합니다.