본문 바로가기

별걸다하는 IT/리눅스 유닉스

파일 권한 내용과 관련 문제 (chmod, chown, rwx, file permission 허가권, 소유자 및 소유자 그룹 변경)

리눅스 완전 정복 : 리눅스 목차


파일 권한이란? (허가권, 소유권)


맨~~날 나오는 리눅스 단골 출제 부문이기도 하고

그런게 아니더라도 리눅스를 쓰게 된다면 아래 그림처럼

-rw-rw-r-- 이런 것들을 보게 될텐데요 이것이 바로 권한 관련된 기능입니다.

[그림1]


저번에도 언급했다시피 리눅스는 여러 사용자들이 사용할 수 있는 운영체제예요. 소위 멀티 유저 시스템이라고 하죠.

이런 경우 다른 사람이 내 파일이 아닌데도 접근해서 삭제하거나 변형하는 등 얼마든지 악용할 수 있는 문제가 발생하겠죠?

이런 것들을 방지하기 위한 것이 권한 기능입니다.


읽기 권한만 가지고 있으면 읽기만 가능하고, 쓰기 권한을 가지고 있으면 쓰는 게 가능하고, 실행 권한이 있으면 실행할 수 있는것이죠.


리눅스에는 소유권과 허가권이라는 두 가지 권한이 있어요.

일반적으로 소유권을 가진자가 허가권을 설정합니다.


소유권: 어떠한 파일이나 디렉터리를 소유하여 지배하는 권리

허가권: 파일이나 디렉터리에 접근 권한을 설정하는 권리


아주 자세하게 나와 있는 친절한 구글 그림~

이제 저 지렁이 글씨들이 무엇을 의미하는지 알 수 있겠죠?

그림에 빨간 글씨로 Permissions라고 되어있는 구간이 허가권을 나타내는 부분입니다.

User가 소유권을 가진 사용자, Group이 그룹 소유권을 말해요


[그림2]


그림 1번 맨 앞을 보면 'drwx-------'라 되어 있는데 여기서 d는 파일 타입을 나타냅니다.

나머지 9자리는 각각 3개씩 나눌 수 있는데 첫 세자리는 파일을 소유한 사용자에게 적용되는 권한, 그 다음은 적혀있듯이 해당 그룹에 속한 사용자들에게 적용되는 권한과 그 외 사용자들에게 적용되는 권한을 보여줍니다.


rwx는 이미 다 추측됐겠지만 read, write, execute의 약자겠죠?

더 풀어 설명하면 walbert이라는 사용자가 이 파일을 소유하고 있고, 읽고 쓰고 실행하는 모든 권한을 다 가지고 있네요

support라는 그룹에 속한 사용자는 이 파일을 읽을 수만 있고 그 외의 사용자는 아무 권한도 없다!! 라고 함축적으로 알려주고 있어요.


허가권과 관련된 명령어 CHMOD


파일이나 디렉터리에 접근할 수 있는 허가권을 설정하는 명령어

chmod (change mode)


저렇게 해석만 할 수 있으면 안되고 물론 설정도 할 수 있어야겠죠? 이를 설정하는 명령어가 change mode의 줄임말인 chmod입니다

두 가지 방식으로 설정할 수 있는데요

저렇게 rwx 영어 알파벳으로 설정할 수 있고

또 한가지 방식은 숫자 방식이 있습니다.


문자 모드 vs 숫자 모드!


문자모드

먼저 문자의 경우 권한의 표시는 계속 설명한대로 r,w,x를 사용하고 읽기 쓰기 실행을 의미합니다

사용자, 그룹, 그 외 사용자 또한 user의 약자인 u, group의 약자인 g, other의 약자인 o = u,g,o로 줄여서 설정해요

a는 all의 약자로 u,g,o를 다 합쳐서 말할 때 씁니다.


 u

 User (the owner of the file) 소유자 

 g

 group (any member of the file's defined group) 그룹 

 o 

 Other (anyone else) 소유자, 그룹 멤버를 제외한 다른 사람들 

 a  

 All (equivalent to ugo) ugo다 합친 전체  


그리고 누구에게 어떤걸 부여할 건지 매칭을 위해서 설정 기호를 씁니다

모든 사용자에게 권한을 주라는 표시인 ugo+rws 이런 경우에는 +를!

이렇듯 기존의 권한에서 +,-기호를 이용하여 설정 또는 해제를 합니다. =는 특정 권한만 지정할 때 사용해요.

operations 

 +

  allow the specified file permissions to be enabled for the specified user classes 

 (permissions that are not specified are unchanged in the mask)

  플러스! 허가권을 추가하는 개념이예요. 기존 허가권에 더해지는 개념이기 때문에 

 지정해주지 않은 허가권은 기존꺼를 따라요

 -

 prohibit the specified file permissions from being enabled for the specified user classes

 (permissions that are not specified are unchanged in the mask)

 허가권 빼기! 추가 +와 반대 개념으로 기존 허가권에서 제외시켜줍니다.

 = 

 allow the specified file permissions to be enabled for the specified user classes

 (permissions not specified will be prohibited by the mask during file creation) 

 허가권을 지정해줍니다 그런데 이 =의 경우 +처럼 추가개념이 아니기 때문에 

 지정하지 않은 허가권은 불허, 즉 권한이 제외됩니다 (밑에 예시에 다시 한번 풀어서 언급해드려요)


숫자모드

숫자모드는 숫자(4,2,1,0)을 조합해서 8진수의 값을 만들어 권한을 설정하는 방법이예요

그냥 덧셈입니다 rwx이니까 가장 뒤에 위치한 x는 1이라는 값을 갖고 w는 2, r은 4를 가져요

(이진수로 변환할 때 각 자리가 8421이렇게 2의 배수로 가는거 생각하면 쉬움)


표로 보면 이렇숩니다 예로 좀 더 이해하기 편하게 하자면, 그럼 755는 무엇일까요? 7은 4+2+1이니까 rwx이고

5는 4+1이니까 r-x을 의미하네요 즉 755는 rwxr-xr-x와 같은 일맥상통하는 표시라는 것~!


옵션

옵션

내용

-R

하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 접근 권한을 변경합니다.


ex)

일단 텍스트 파일을 만들어볼게요

사용자 계정은 이름이 우분투인 상태에서 만들었어요


파일의 타임스탬프를 변경하거나 파일의 크기가 0인 빈 파일을 생성하는 명령어

touch


touch permissionTest.txt

하고 파일 목록을 출력해주면


이처럼 -rw-rw-r-- 의 허가권을 갖는 퍼미션테스트 텍스트 파일이 생성되었네요!


ubuntu@server:~$ chmod ugo+rwx permissionTest.txt

모든 사용자에게 권한을 줘! ugo는 user, group, other 모두를 의미하고 rwx는 모든 권한이니까!


ubuntu@server:~$ chmod 755 permissionTest.txt

했더니 앞에서 말한대로 -rwxr-xr-x로 변환된 것을 확인할 수 있어요

ubuntu@server:~$ chmod o=r permissionTest.txt

=기호는 기존 권한을 초기화한 후에 지정한 권한말 설정할 때 사용됩니다. 따라서 결과물이 other부문인 세 번째가 r--로 변경되었네요!


소유권 및 그룹 소유권 변경


이번엔


요 사진에 나오는 Owners 부문을 변경하는 법을 알아볼게요


파일이나 디렉터리의 소유권 및 그룹 소유권을 변경하는 명령

chown (change owner)

# chown [option] owner[:group] file(s)


옵션


옵션

내용

-R

하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 소유 권한을 변경합니다.


테스트~

아까 만들었던 permissionTest.txt파일을

chown root:root permissionTest.txt

명령어를 이용해 소유자와 그룹 소유자를 root로 변경해주려고 해요

하지만 !!

changing ownership of 'permissionTest.txt':Operation not permitted 에러가 뜨는데!!

chown 또한 root권한에서 실행할 수 있기 때문에 당연한 에러인것...

잠깐 root권한을 빌려다 쓰기 위해 sudo를 앞에 붙여줍니다

그리고 파일을 출력해보면 사용자와 그룹이 root로 잘 변경된 것을 볼 수 있습니다


ex

# chown -R yang *

-> 하위 디렉터리를 포함하여 현재 디렉터리의 모든 파일의 소유자를 yang으로 변경한다.


# chown yang:ubuntu permissionTest.txt

# chwon yang.ubuntu permissionTest.txt

->permissionTest.txt 파일의 소유자는 yang, 소유 그룹은 ubuntu로 설정한다.

':'대신에 '.'을 사용해도 똑같다.


# chown 101 permissionTest.txt

-> permissionTest.txt파일의 소유자를 UID가 101인 사용자로 설정한다.


# chown :yang permissionTest.txt

-> permissionTest.txt 파일의 그룹 소유권을 yang으로 설정한다.


관련문제


2016년 2회 리눅스 마스터 기출

다음 중 허가권에 대한 설명으로 틀린 것은?

1. 파일의 내용을 볼 수 있는 권한 표시는 r을 사용한다.

2. 디렉터리 안에 파일을 생성 또는 삭제할 수 없는 권한 표시는 w를 사용한다.

3. 실행 파일을 실행시킬 수 있는 권한 표시는 x를 사용한다

4. 디렉터리 내부로 접근할 수 있는 권한 표시는 x를 사용한다.


답: 2


다음은 .txt로 끝나는 파일들에 대한 허가권을 설정하는 과정이다. 모든 사용자에 대해 읽기 권한만을 설정하려고 할 때 (괄호) 안에 들어갈 내용으로 알맞은 것은?

------------------------------------------------------------

# chmod (괄호) *.txt

------------------------------------------------------------

1. a+r

2. a=

3. 0-r

4 o=w


답: 1


다음 파일의 소유 그룹을 ihd로 지정하려고 할 때 (괄호) 안에 들어갈 명령으로 알맞은 것은?

------------------------------------------------------------

[root@ihd ~]# (괄호) :ihd example.txt

------------------------------------------------------------

1. cd

2. chgrp

3. chmod

4. chown


답: 4


2016년 1회 리눅스 마스터 기출

다음 중 chmod 명령어에 대한 설명으로 알맞은 것은?

1. 파일이나 디렉터리의 소유권 및 그룹 소유권을 변경하는 명령어이다

2. 16진수의 값을 사용하는 숫자 모드로 지정한다.

3. 문자 모드에서 권한의 표시는 r,m,x를 사용한다

4. 파일이나 디렉터리에 접근할 수 없는 허가권을 설정하는 명령이다.


다음 (괄호) 안에 들어갈 내용으로 알맞은 것은?

------------------------------------------------------------

[root@ihd ~]$ ls -l documentation/

-rw-rw-r--. 1 jparks7 jparks7 3046 Jan 10 18:18 Connector-J.md

-rw-rw-r--. 1 jparks7 jparks7 18354 Jan 10 18:18 Failovery.md

drwxrwxr-x. 4 jparks7 jparks7 4096 Jan 10 18:18 src

[root@ihd ~]$ chown (괄호) jparks7.root documentation/

[root@ihd ~]$ ls -l

-rw-rw-r--. 1 jparks7 root 3046 Jan 10 18:18 Connector-J.md

-rw-rw-r--. 1 jparks7 root 18354 Jan 10 18:18 Failovery.md

drwxrwxr-x. 4 jparks7 root 4096 Jan 10 18:18 src

------------------------------------------------------------

1. -f

2. -c

3. -r

4. -R


2016년 4회 리눅스 마스터 기출

다음 중 리눅스 파일의 퍼미션을 설정하는 사용자 구분으로 틀린 것은?

1. 최고관리자(root)

2. 소유자 (owner)

3. 그룹(group)

4. 기타(public)


답: 1


현재 text.txt 파일에 대한 허가권은 654이다. 이 파일을 다음과 같이 변경하려고 할 때 틀린 것은?

------------------------------------------------------------

-rwxr-xr-- 1 root root 4 Aug 8 13:48 test.txt

------------------------------------------------------------

1. chmod 756 test.txt

2. chmod u+rwx,go+rx test.txt

3. chmod u=rwx, g=rx, o=r test.txt

4. chmod u+x test.txt


답: 2


도움이 됐다면 공감 꾹 

공감과 댓글은 지식 공유의 힘이 됩니다 ;)