Linux 파일 권한 소개 및 권한 변경

Linux의 파일 권한에 대해서 간단히 소개하고, 파일 권한을 어떻게 변경하는지 알아보겠습니다.

1. File Owner

리눅스에서는 파일 소유자 별로 다른 접근 권한을 부여할 수 있습니다.

리눅스는 파일 소유자를 3가지(Owner, Group, Others)로 분류합니다.

  • Owner : 파일의 소유자
  • Group : 파일의 그룹
  • Others : 사용자가 Owner와 Group에 속하지 않으면 Others입니다.

파일의 Owner, Group은 Shell에서 ls -al 명령어를 입력하면 확인할 수 있습니다. 아래 그림에서 Owner와 Group으로 표기한 것이 파일의 Owner 이름과 Group 이름입니다. linux file permissions, owner

그리고 Shell에서 id 명령어를 입력하면, 현재 Shell의 Owner(uid)와 Group(gid)이 무엇인지 확인할 수 있습니다.

$ id
uid=1000(js) gid=1000(js) groups=1000(js),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),120(lpadmin),131(lxd),132(sambashare)

Shell의 소유자와 파일이 소유자에 따라서, 다음과 같은 방식으로 접근 권한이 적용됩니다.

  • 만약 Shell의 Owner가 파일의 Owner와 일치한다면, 파일 Owner에 설정된 접근 권한이 적용됩니다.
  • 만약 Group과 일치한다면, 파일의 Group에 설정된 접근 권한이 적용됩니다.
  • 둘 다 일치하지 않는다면, 파일의 Others에 설정된 접근 권한이 적용됩니다.

2. File Permission

파일 그룹은 터미널에서 ls -al 명령어를 입력했을 때, 아래 그림과 같이 Permission으로 표기한 위치에 보여줍니다. linux file permissions, owner

맨 왼쪽의 위치가 1이고 가장 마지막의 위치가 10이라고 했을 때, 각각 다음과 같은 의미를 갖습니다.

Position Description
1 File type
2~4 Owner permission
5~7 Group permission
8~10 Others permission

File type은 다음과 같은 종류가 있습니다.

  • - : 일반 파일
  • d : 디렉토리 파일
  • b : 블록 디바이스 파일 (Block Device File)
  • c : 문자 디바이스 파일 (Character Device File)
  • l : 심볼릭 링크 파일

File type을 제외한 나머지 9개 문자는 Owner, Group, Other의 권한을 의미합니다. 각각 3자리로 권한을 표현하는데, 권한 종류는 다음과 같습니다.

  • r : read 권한
  • w : write 권한
  • x : execute 권한

rwx는 숫자로도 표현하는데, r은 4, w는 2, x는 1입니다. 그래서 7(4+2+1)rwx 권한을 의미합니다. rw-4+2 = 6이 됩니다.

3. 파일 권한 변경

Linux의 shell은 chmod 명령어를 제공하여 파일의 권한을 변경할 수 있습니다.

Syntax는 다음과 같습니다.

$ chmod <permission> <fileName>

위에서 권한은 숫자로 표현할 수 있다고 했는데, 777은 Owner=7(rwx), Group=7(rwx), Others=7(rwx)를 의미합니다.

아래 예제를 보시면, 모든 그룹에 rwx 권한이 부여된 것을 확인할 수 있습니다.

$ chmod 777 sample.txt
$ ls -al sample.txt
-rwxrwxrwx 1 js js 0 1010 20:57 sample.txt

그리고 다른 예로, 212로 파일 권한을 다시 변경해보았습니다.

$ chmod 212 sample.txt
$ ls -al sample.txt
--w---x-w- 1 js js 0 1010 20:57 sample.txt

3.1 문자로 파일 권한 설정

숫자 대신에, rwx와 같은 문자로 권한을 변경하려면 다음과 같이 설정하시면 됩니다.

$ chmod u=rwx,g=rw,o=r sample.txt

$ ls -al sample.txt
-rwxrw-r-- 1 js js 0 1010 20:57 sample.txt

u=?, g=?, o=?는 groupName을 의미하며, 의미는 다음과 같습니다. 각각의 그룹에 설정할 권한을 문자로 입력하시면 됩니다.

  • u : Owner를 의미
  • g : Group을 의미
  • o : Others를 의미

3.2 특정 파일 권한 추가, 제거

특정 그룹에 특정 권한만 추가하거나, 제거할 수도 있습니다.

Syntax는 다음과 같습니다.

chmod <groupName>+<permissionName> <fileName>

or

chmod <groupName>-<permissionName> <fileName>

위의 Syntax에서 +는 특정 그룹에 권한을 부여하라는 의미이고, -는 특정 그룹에 권한을 뺏으라는 의미입니다.

groupName은 다음과 같습니다.

  • u : Owner를 의미
  • g : Group을 의미
  • o : Others를 의미
  • a : Owner, Group, Others 모두를 의미

3.3 특정 파일 권한 추가, 제거

아래 예제에서, u+r은 Owner에 read 권한을 추가하라는 의미입니다. rw를 추가하고 싶다면 u+rw로 입력하면 되고, rwx를 추가하고 싶다면 u+rwx를 입력하시면 됩니다.

$ ls -al sample.txt
------x-w- 1 js js 0 1010 20:57 sample.txt

$ chmod u+r sample.txt

$ ls -al sample.txt
-r----x-w- 1 js js 0 1010 20:57 sample.txt

만약 Group이나 Others의 권한을 추가하고 싶다면 g+r 또는 o+r처럼 입력하시면 됩니다.

3.4 특정 파일 권한 추가, 제거

다음 예제는 권한을 뺏는 예제입니다. 위에서 설명한 것과 동일하고, 권한이 회수된다는 것만 차이가 있습니다.

$ ls -al sample.txt
-rwxr-xrwx 1 js js 0 1010 20:57 sample.txt

$ chmod o-rwx sample.txt

$ ls -al sample.txt
-rwxr-x--- 1 js js 0 1010 20:57 sample.txt

3.5 특정 파일 권한 추가, 제거

마지막으로 a를 사용하여 Owner, Group, Others에 일괄적으로 권한을 부여하거나 회수하는 예제입니다.

$ chmod a-rwx sample.txt

$ ls -al
----------  1 js  js     0 1010 20:57 sample.txt

$ chmod a+rwx sample.txt

$ ls -al
-rwxrwxrwx  1 js  js     0 1010 20:57 sample.txt
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha