본문 바로가기
시스템운영

chmod,chown,chgrp

by 보이드메인 2020. 4. 23.

 

chmod

chmod  특정 파일 또는 디렉토리의 퍼미션(permission)을 변경 명령어.

 

※ 명령어 위치 : /bin/chown

 

※ 퍼미션(permission) : 특정 파일이나 디렉토리에 대하여 읽기, 기록하기, 삭제하기 등의 권한을 설정해 놓은 것으로 다중 사용자 운영체제(Multi-User Operation System)에서 파일의 접근 권한과 보호 등을 위하여 필요한 것이다.

 

또한 퍼미션은 리눅스뿐아니라 UNIX, Solaris, AIX, FreeBSD 등의 운영체제에서도 같은 목적으로 사용할 수 있다. 특히, 웹(WWW)으로 홈페이지를 보여 줄 때에 웹문서 파일의 퍼미션 설정이 되어있지 않아서 “이 문서는 허용되지 않았습니다.”라는 웹페이지 에러를 자주 접하곤 한다.

 

이에 대한 원인은 거의 대부분 웹페이지 파일의 퍼미션이 허용되지 않기 때문이다.

파일(디렉토리)의 펴미션(권한, permission) 종류에는 아래와 같이 5가지가 있다.  퍼미션이 파일에 적용될 때와 디렉토리에 적용될 때의 의미가 다르다.

 

퍼미션

 

r

읽기(read) 권한

파일을 읽을 수 있음

디렉토리의 내용을 볼수 있음(ls로 파일 리스트 확인 가능)

w

쓰기(write) 권한

파일에 저장, 삭제할 수 있음

디렉토리에 파일 저장, 변경, 삭제 등 가능

x

실행(execution) 권한

파일을 실행할 수 있음

디렉토리에 접근할 수 있음(cd로 접근 가능, ls로 리스트는 불가)

s

SetUID, SetGID 권한

파일 소유자(SetUID), 그룹 소유자(SetGID)의 권한으로 실행함

t

Sticky Bit 권한

공유 디렉토리로 사용됨

 

※ 사용 형식 : chmod [옵션] 8진수퍼미션설정 대상파일들

                    chmod [옵션] 퍼미션설정모드 대상파일들

 

-rwxr-xr-x         1            root root      4725    Nov  5 20:41   hello.exe

허가권         하드링크수    소유권           크기      날짜                파일이름

 

허가권은 10개의 문자로 되어 있고 첫번째 문자는 

일반파일이면 -

디렉토리이면 d

심벌릭링크이면 l(영문엘)

등으로 표시된다.

나머지 문자는 3개씩 묶어서 소유자, 그룹, 다른 계정들의 권한을 나타낸다.

rwx r-x r-x  --->  755

 

~rwx 의 의미

1. r

파일 : 파일의 내용을 읽을 수 있다.

디렉토리 : 디렉토리 안의 내용을 ls 로 볼 수 있다.

2. w

파일 : 파일의 내용을 수정할 수 있다.

디렉토리 : 디렉토리안의 내용을 수정할 수 있다.

(파일을 삭제하려면 그 파일이 존재하고 있는 디렉토리에 w  권한이 있어야 한다.)

3. x

파일 : 파일을 실행할 수 있다.

디렉토리 : 디렉토리 안으로 cd 를 이용해서 들어갈 수 있다.

 

위와 같은 정보에서 퍼미션 부분을 보면 다음과 같다.

- rw-    r--     r--
파일 유형 유자권한 그룹소속자권한 일반다른사용자권한

 

A.파일 유형

이 위치에는 다음과 같은 문자들이 설정될 수 있으며 문자들의 의미는 다음과 같습니다.

- : 일반 파일임을 의미함

b : 블럭구조의 특수파일(Block Special File)을 의미함(예: /dev/sda)

c : 입출력에 사용되는 특수파일(Character Special File)을 의미함(예: /dev/console)

d : 디렉토리(Directory)를 의미하며, 디렉토리도 하나의 특수 파일로 취급됨

l : 심벌릭 링크 파일(Link File)임을 의미함

p : 파이프 파일(Pipe)임을 의미함

s : 소켓 파일(Socket)임을 의미함

 

B.소유자권한 

이 위치에서는 8가지의 경우로 설정될 수 있으며 각각의 의미는 아래와 같다.

--- : 파일의 소유자에게 아무런 권한이 없음(8진수 표시: 0 , 2진수 표시: 000)

--x : 파일의 소유자에게 실행(eXecution) 권한만 있음(8진수 표시: 1 , 2진수 표시: 001)

-w- : 파일의 소유자에게 쓰기(write) 권한만 있음(8진수 표시: 2 , 2진수 표시: 010)

-wx : 파일의 소유자에게 쓰기와 실행 권한만 있음(8진수 표시: 3, 2진수 표시: 011)

r-- : 파일의 소유자에게 읽기(read) 권한만 있음(8진수 표시: 4 , 2진수 표시: 100)

r-x : 파일의 소유자에게 읽기와 실행 권한만 있음(8진수 표시: 5 , 2진수 표시: 101)

rw- : 파일의 소유자에게 읽기와 쓰기 권한만 있음(8진수 표시: 6 , 2진수 표시: 110)

rwx : 파일의 소유자에게 읽기,쓰기,실행 권한만 있음(8진수 표시: 7 , 2진수 표시: 1110

 

위의 예에서는 이 부분의 설정이 rw-로 되어 있으므로 root 라는 파일 소유자에게 읽기와 쓰기 권한이 있음을 알 수 있다.

 

C.그룹소속자권한부분

위 B.의 경우의 예와 같습니다.

위의 예에서 r--로 설정되어 있으므로 root라는 그룹에 소속된 사용자들에게 읽기 권한만 주어진 것이다.

D.일반다른사용자권한부분

위 B.의 경우의 예와 같습니다.

위의 예에서 r--로 설정되어 있으므로 일반 다른 사용자들에게 읽기와 실행 권한이 있음을 알수 있다

 

※ 즉, 파일의 퍼미션을 설정하는 방법에는 두가지 방법이 있다.

 

<예제> # chmod 755 파일이름

- 파일소유자에게 7 (2진수로는 111)의 권한 즉, rwx의 권한을 부여함

- 파일그룹소속자에게 5 (2진수로는 101)의 권한 즉, r-x의 권한을 부여함

- 다른사용자들에게 5 (2진수로는 101)의 권한 즉, r-x의 권한을 부여함

이렇게 숫자로 지정을 하면

첫번째 숫자는 파일의 소유자권한

두번째 숫자는 그룹소속자권한

세번째 숫자는 다른사용자에 대한 권한을 각각 표시하게 된다.

<예제> # chmod o+rw 파일이름

- 파일이름에 대해 일반다른사용자들(other)에게 읽기(r, Read) 권한과 쓰기(w, Write)권한을 부여한다.

특정문자로 사용하는 종류에는 다음과 같은 것들이 있다.

u : 소유자(user)를 의미함

g : 그룹(group)을 의미함

o : 다른사용자(other)들을 의미함

a : 모두(all)을 의미함(default)

그리고 이 문자와 함께 + 기호가 사용되면 “권한을 부여한다”라는 의미이며,

                               - 기호가 사용되면 “권한을 제거한다”라는 의미가 된다.

 

 

특정 파일에 SetUID Bit 설정하기

 

SetUID : 특정 파일에 SetUID Bit가 설정되어 있다면 다른 사용자들이 그 파일을 실행하였을 경우 실행되는 동안에는 실행시킨 사용자의 권한(아이디의 권한)이 아닌, 파일의 소유자권한으로 실행이 된다.

-r-xr-xr-x 1 root root 0 10월 16 00:11 rick

# chmod 4755 rick

-rwsr-xr-x 1 root root 0 10월 16 00:11 rick

SetGID는 일반 퍼미션 앞에 2를 붙이면 되고, Sticky Bit는 1을 붙이면 된다.(chown 시간에 자세하게 배운다.)

<실습> 특정 파일에 SetGID Bit 설정하기

-rwsr-xr-x 1 root root 0 10월 16 00:11 rick

# chmod 2755 rick

-rwxr-sr-x 1 root root 0 10월 16 00:11 rick

<실습> 특정 디렉토리에 Sticky Bit 설정하는 퍼미션 설정하기

-rwxr-sr-x 1 root root 0 10월 16 00:11 rick

# chmod 1755 rick

-rwxr-xr-t 1 root root 0 10월 16 00:11 rick

리눅스에서는 흔히 /tmp 디렉토리를 Sticky Bit로 설정 합니다. 이 /tmp 디렉토리내에서 특정 파일을 생성하면 생성한 사용자의 소유자로 파일이 생성된다.

그리고 다른 사용자가 /tmp 디렉토리에 다른 파일을 생성하면 역시 생성한 소유자의 소유로 파일이 생성된다. 파일을 삭제할 때에도 생성한 사람만이 삭제를 할 수가 있다.

 

chown

chown  CHange OWNer의 약어. 파일(File)이나 디렉토리(Directory)의 소유자와 소유 그룹을 변경할때 사용.

 

※ 명령어 위치 : /bin/chown

 

# touch doom1

# touch doom2

# touch doom3

# mkdir doomguydir

# mkdir our_hero

 

특정 파일의 소유자 변경하기

chown 명령어로 doom1 이라는 파일의 소유자를 변경해 보자.

-rw-r--r-- 1 root root 0 10월 16 11:19 doom1

# chown jackson doom1

-rw-r--r-- 1 jackson root 0 10월 16 11:19 doom1

소유자가 변경된것을 알 수 있다.

물론, 이런 명령어가 허용이 되려면 파일에 대한 소유권이 있어야 가능하다.

아무 파일 또는 디렉토리의 소유자를 변경할 수 있는 것은 아니다.

 

특정 파일의 소유자와 소유그룹을 동시에 변경하기

chown 명령어로 doom2 라는 파일의 소유자와 소유그룹을 동시에 변경해 보자.

-rw-r--r-- 1 root root 0 10월 16 11:19 doom2

# chown jackson:jackson doom2 // : (콜론)으로 구분해서 넣어야 한다.

-rw-r--r-- 1 jackson jackson 0 10월 16 11:19 doom2

 

특정 디렉토리내의 소유자와 소유그룹을 모두 한꺼번에 변경하기

리눅스에서는 디렉토리도 하나의 특수파일로 인식하기 때문에 파일의 소유자와 소유그룹을 변경하는 방법과 디렉토리의 소유자와 소유그룹을 변경하는 방법이 동일하다.

 

파일의 소유자와 소유그룹변경시에 UID와 GID로 지정하여 변경하기

일반적으로 chown 명령어로 소유자와 소유그룹을 변경할 때에 계정명(ID)과 그룹명으로 지정한다.

하지만 chown 에서 ID와 그룹명대신 UID와 GID를 지정하여도 변경이 된다.

UID와 GID를 보려면 /etc/passwd

# grep 500 /etc/passwd // grep 특정 파일에 패턴(500)을 찾고자 할때

doom:x:500:500:leesangchul:/home/doom:/bin/bash

-rwxr-xr-x 1 root root 0 10월 16 11:19 doom3

# chown 500:500 doom3

-rwxr-xr-x 1 doom doom 0 10월 16 11:19 doom3

 

특정 디렉토리내의 모든 파일과 디렉토리의 소유자와 소유그룹을 모두 한꺼번에 변경할때에 UID와 GID를 지정하여 변경하기

위 내용을 이해하였으면 알 것이다. –R 옵션을 사용하여 직접 해보자.

파일이나 디렉토리 등 모두 같은 형식으로 하면 된다.

 

chgrp

chgrp는 “CHange GRouP”의 약어. 파일이나 디렉토리의 소유그룹을 변경할 때 사용 명령어.

 

즉, chown 명령어는 소유자와 소유그룹을 한꺼번에 변경할 수 있지만 chgrp로는 특정 파일이나 디렉토리의 소유 그룹만을 변경할 수가 있다.

※ 명령어 위치 : /bin/chgrp

위에서 설명한  chmod, chown 와 동일한 방법으로 사용한다




댓글