[linux] 리눅스 권한 (chmod, chown)

- 3 mins

chmod

리눅스에서 ls -l 명령어를 치면 맨 앞쪽에 다음과 같은 이상한 10자리 문자열을 볼 수 있다.

dr-xr-xrw- 14 itholic itholic 195 10월 18 12:41 testfile

이는 사실 다음과 같이 네 부분으로 나뉘어져 있으며, 각 부분이 의미하는 바는 다음과 같다.

  1. d : 디렉토리 여부 (디렉토리일 경우 d, 파일일 경우 -)
  2. r-x : 소유 사용자에 대한 read, write, execute 권한
  3. r-x : 소유 그룹에 대한 read, write, execute 권한
  4. rw- : 기타 사용자에 대한 read, write, execute 권한

d는 디렉토리를 의미한다. (파일은 -)

r은 read권한, w는 write권한, x는 execute권한을 의미한다.

r, w, x 각 문자가 적혀있으면 해당 권한이 있는 것이고, - 라고 표시되어있으면 해당 권한이 없는 것이다.

여기서 소유 사용자, 소유 그룹이란

dr-xr-xrw- 14 itholic itholic 195 10월 18 12:41 testfile

중간에 itholic itholic 이라고 쓰여있는 부분을 의미한다.

앞에 있는 것이 해당 파일(혹은 디렉토리)의 소유 사용자, 뒤에 있는 것이 소유 그룹이다.

또한,디렉토리냐 파일이냐에 따라 r w x가 의미하는 바가 약간 다르다.

표로 보자.

유형 r w x
d(디렉토리) 이 권한이 없으면 디렉토리 목록을 볼 수 없음 이 권한이 없으면 해당 디렉토리에 파일을 추가할 수 없음 디렉토리에 접근하는 권한, 이 권한이 없으면 rw권한이 모두 있어도 접근 불가능함
-(파일) 이 권한이 없으면 파일을 열 수 없음 이 권한이 없으면 파일을 수정할 수 없음 이 권한이 있으면 실행파일, 없으면 문서파일임

맨 앞의 디렉토리 여부는 떼놓고 나머지 9자리만 보자.

만약 사용자에게만 read 권한을 주고, 그룹과 기타 사용자에게는 아무런 권한도 주고싶지 않다면 이렇게 하면 된다

r– — —

사용자, 그룹에게만 read, write 권한을 주고싶다면 이렇게 하면 된다.

rw- rw- —

사용자, 그룹, 기타 사용자에게 모두 접근 권한만 주고싶다면 이렇게 하면 된다.

–x –x –x

명령어를 이용해서 이 권한을 바꾸려면 두 가지 방법이 있다.

1. 숫자를 통한 권한 변경

만약 어떤 파일에 다음가 같이 권한을 주고싶다고 가정하자.

소유 사용자에게는 read, write 권한을 주고싶다 (rw-)

소유 그룹에게는 write, execute 권한을 주고싶다 (-wx)

기타 사용자에게는 read, execute 권한을 주고싶다 (r-x)

즉, rw- -wx r-x 라는 권한을 주고싶은 것이다.

그런데, r, w, x 는 각각 4, 2, 1 이라는 숫자가 배정되어있다. (- 일 경우는 0이다)

즉, rw- -wx r-x 권한은 420 021 401로 나타낼 수 있다.

(4(r)2(w)0(-) 0(-)2(w)1(x) 4(r)0(-)1(x))

이렇게 나온 숫자를 다음과 같이 각 묶음별로 더해보자.

4+2+0 0+2+1 4+0+1

그럼 다음과 같이 표현된다.

6 3 5

그렇다. ‘rw- -wx r-x’이라는 권한은 ‘6 3 5’로 간단히 나타낼 수 있고, 다음과 같은 명령어를 통해 권한을 부여할 수 있다.

chmod 635 [파일명]

2. 문자를 통한 권한 변경

문자를 통한 권한 변경은 보다 직관적이다.

다음과 같은 권한을 가지고 있는 파일이 있다고 하자.

rwx rwx rwx

모든 사용자에게 write, read, execute 권한이 부여되어있다.

하지만 기타 사용자에게는 write권한을 주고싶지 않다면?

chmod o-x [파일명]

이 명령어는 o(other, 기타사용자)에게 x 권한을 뺀다(-)는 뜻이다.

만약 다시 권한을 주고싶다면

chmod o+x [파일명]

과 같이 o(ther) 에게 x 권한을 부여(+) 해주면 된다.

기타 사용자의 약자가 o라면, 소유 사용자와 소유 그룹의 약자는 u(user), g(group) 이다.

어떤 파일에서 소유 사용자에게 write 권한을 부여하고자 한다면 다음과 같이 하면 된다.

chmod u+w [파일명]

u(ser)에게 w(rite)권한을 부여(+)했다.

소유 그룹에게 read 권한을 부여하고자 한다면 다음과 같이 하면 된다.

chmod g+r [파일명]

g(roup)에게 r(ead)권한을 부여(+)했다.

chown

앞선 설명에서 다음과 같은 말을 한적이 있다.

dr-xr-xrw- 14 itholic itholic 195 10월 18 12:41 testfile

앞에 있는 것이 해당 파일(혹은 디렉토리)의 소유 사용자, 뒤에 있는 것이 소유 그룹이라고 말이다.

소유 사용자와 소유 그룹도 변경할 수 있는데, chown이라는 명령을 통해 가능하다.

간단하게 알아보자.

1. 소유 사용자를 root로 변경

chown root testfile

2. 소유 사용자를 root로, 소유 그룹을 rootgroup으로 변경

chown root:rootgroup testfile

3. 서브디렉토리의 모든 소유를 root로 변경 (대상이 디렉토리일 경우)

chown -R root testdir




코딩장이

코딩장이

-장이: [접사] ‘그것과 관련된 기술을 가진 사람’의 뜻을 더하는 접미사.

rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora