Raspberry Pi_Kor_13.2.2 파일에 대한 권한의 변경


Published Book on Amazon


All of IOT

Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 1

All of IOT

Starting with the Latest Raspberry Pi from Beginner to Advanced – Volume 2


출판된 한글판 도서


최신 라즈베리파이(Raspberry Pi)로 시작하는 사

물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (상)

최신 라즈베리파이(Raspberry Pi)로 시작하는 사

물인터넷(IOT)의 모든 것 – 초보에서 고급까지 (하)


Original Book Contents


13.2.2  파일에 대한 권한의 변경

 

13.2.2.1    "chmod" 명령을 이용한 권한 변경

 

파일에 대한 권한을 변경할 때는 chmod 명령을 사용한다. 이 명령에는 사용자의 범위, 변경 작업의 내용, 변경 권한의 종류를 지정한다.

 

[명령 형식]

chmod  [OPTION]...  MODE[,MODE]... FILE...

 

[명령 개요]

    파일에 대한 처리 권한을 변경한다.

    user 권한    -- super user.

 

[상세 설명]

    이 명령은 특정 파일에 대한 file mode bit를 변경하여 처리할 수 있는 권한을 조정한다

    권한의 내용을 정의할 때는 symbolic representation numeric representation을 사용할 수 있다.

 

[주요 option]

--help

display this help and exit

-R, --recursive

operate on files and directories recursively 

directory에 작업할 경우 하위의 모든 directory와 파일에 대한 내용까지 한꺼번에 변경된다

 


 

13.2.2.2    symbol 표현 형식의 권한 변경

 

이 명령에는 사용자의 범위, 변경 작업의 내용, 변경 권한의 종류를 지정해야 하며 다음과 같은 symbol 표현 형식으로 지정할 수 있다.

 

구분

parameter

의미

설명

사용자의 범위

u

owner

소유자

g

group

소유 그룹

o

other

기타 사용지

a

all

모든 사용자

변경 작업의 종류

+

부여

권한 추가

-

박탈

권한 제거

=

only

권한 배타적 설정

변경 권한의 종류

r

read

읽기

w

write

쓰기

x

execute

실행

 

    권한 변경 사용자의 범위

특정 파일에 대해서 권한이 변경되는 사용자의 범위를 의미한다. 즉 파일에 대한 권한을 설정할 때는 소유 사용자, 소유 그룹, 기타의 사용자로 구분되는 권한 중에서 누구의 권한이 변경되는지를 지정한다. 여기서 parameter "a"는 모든 사용자에 대한 권한, 즉 소유 사용자, 소유 그룹, 기타 사용자에 대한 권한을 동시에 변경하는 것이다.

 

명령을 실행할 때는 이러한 사용자의 범위를 지정하는 기호를 하나 이상 동시에 지정하여 여러 사용자 권한을 동시에 변경할 수 있다. "ug"는 소유 사용자와 소유 그룹의 권한을 변경하고, "uo"는 소유 사용자와 기타 사용자의 권한을 변경하게 된다. 또한 "ugo"는 소유 사용자, 소유 그룹, 기타 사용자 모두를 의미하며, "a" 와 동일한 효과가 있다.


 

    권한 변경 작업의 종류

여기서는 권한을 추가로 부여하는지, 기존의 권한을 박탈하는지를 지정하는 것이다. "+"는 새로운 권한을 부여하는 기능이 있고, "-"는 기존에 부여된 권한을 제거하는 기능이 있다. "="는 조금 특별한 기능을 수행하는데, 이번 작업에서 지정한 권한 이외는 모두 제거하는 기능을 수행한다. 예를 들어 이번 작업에서 "="를 이용하여 "쓰기" 권한을 부여하게 되면, "읽기" 권한과 "실행" 권한은 없어지게 된다명령을 실행할 때는 작업의 종류는 하나만 지정할 수 있다.

 

    변경 권한의 내용

여기서는 어떤 권한을 변경하는지를 지정하는 것이다파일에 대해서 "읽기" 권한, "쓰기" 권한, "실행" 권한 중에서 처리를 원하는 권한을 선택하여 지정하면 된다.   

 

명령을 실행할 때는 권한에 대응되는 기호를 하나 이상 동시에 지정하여 여러 가지 권한을 동시에 변경할 수 있고, 필요한 경우는 아무것도 지정하지 않을 수도 있다. "rw" "읽기" 권한과 "쓰기" 권한을 동시에 처리하는 것을 의미하고, " "으로 표시하면 어떤 권한도 지정하지 않는 것을 의미한다.

 

[사용 Example]

작업을 시작하기 전에 작업 대상이 되는 directory에 대한 상세 정보를 조회해 보면 다음과 같이 되어 있다. 여기서 "user_guide01.txt"에 대한 권한을 확인해 보기 바란다.

 

pi@raspberrypi ~ $ ls ./testdata -l

total 16

drwxr-xr-x 2 root root 4096 Mar 24 02:26 manual01

drwxr-xr-x 2 pi   pi   4096 Mar 24 02:26 manual02

-rw-r--r-- 1 pi   pi     18 Mar 24 02:10 user_guide01.txt

-rw-r--r-- 1 pi   pi     18 Mar 24 02:10 user_guide02.txt

 

먼저 "user_guide01.txt"에 대한 모든 권한을 삭제해 보도록 하겠다. 모든 사용자 범위에 대한 작업을 하기 위해서는 기호 "a"를 사용하면 된다. 모든 권한을 삭제하기 위해서는 "a-rwx"를 사용할 수도 있지만 여기서는 "a="을 사용하도록 한다. 작업이 완료된 이후에 파일에 대한 상세 정보를 다시 조회해 보면 "user_guide01.txt"에 대한 모든 권한이 박탈되어 있는 것을 확인할 수 있다.


 

pi@raspberrypi ~ $ sudo chmod a= ./testdata/user_guide01.txt

 

pi@raspberrypi ~ $ ls ./testdata -l

total 16

drwxr-xr-x 2 root root 4096 Mar 24 02:26 manual01

drwxr-xr-x 2 pi   pi   4096 Mar 24 02:26 manual02

---------- 1 pi   pi     18 Mar 24 02:10 user_guide01.txt

-rw-r--r-- 1 pi   pi     18 Mar 24 02:10 user_guide02.txt

 

다음으로 동일 파일 "user_guide01.txt"에 대해서 소유 사용자와 소유 그룹에 대해 "읽기", "쓰기", "실행" 권한을 모두 부여해 보도록 하겠다. 소유 사용자와 소유 그룹에 대한 작업을 하기 위해서는 기호 "ug"를 사용하면 된다. 모든 권한을 부여하기 위해서는 "rwx"를 사용하여 다음과 같이 작업을 한다. 작업이 완료된 이후에 파일에 대한 상세 정보를 다시 조회해 보면 "user_guide01.txt"에 대한 권한이 다음과 같이 수정되어 있는 것을 확인할 수 있다

 

pi@raspberrypi ~ $ sudo chmod ug+rwx ./testdata/user_guide01.txt

 

pi@raspberrypi ~ $ ls ./testdata -l

total 16

drwxr-xr-x 2 root root 4096 Mar 24 02:26 manual01

drwxr-xr-x 2 pi   pi   4096 Mar 24 02:26 manual02

-rwxrwx--- 1 pi   pi     18 Mar 24 02:10 user_guide01.txt

-rw-r--r-- 1 pi   pi     18 Mar 24 02:10 user_guide02.txt


 

13.2.2.3    number 표현 형식의 권한 변경

 

권한을 변경할 때는 앞에서처럼 기호를 이용하여 내용을 지정할 수도 있지만, 권한의 내용을 문자가 아닌 숫자의 형태로 지정하는 또 다른 방법이 있다사실 이 방식은 원래 UNIX 시스템에서 원래 사용하던 오래된 방식이며, 사후에 기호 표현 문자를 이용하는 방식이 도입되었다

 

그러면 숫자를 이용하여 권한을 표현하는 방법에 대해서 알아보자여기서는 다음과 같이 각각의 권한에 대응하여 아래와 같이 숫자 값은 지정하고, 권한의 종류에 대응되는 숫자를 이용하여 권한을 표현하게 된다.

 

    읽기 권한    -- 4

    쓰기 권한    -- 2

    실행 권한    -- 1

    권한 없음    -- 0

 

사용자에 대한 권한을 표현할 때는 "읽기" 권한, "쓰기" 권한, "실행" 권한에 대응하는 숫자를 모두 더하여 하나의 숫자로 표현한다.

 

    r--  -- 4 + 0 + 0       -- 4      -- 읽기 권한만 있음      

    rw- -- 4 + 2 + 0       -- 6      -- 읽기, 쓰기 권한이 있음

    rwx -- 4 + 2 + 1       -- 7      -- 읽기, 쓰기, 실행권한이 있음

 

파일에 대한 권한은 소유 사용자, 소유 그룹, 기타 사용자에 대해서 별도의 권한을 지정하므로 이렇게 숫자로 표현된 권한도 각각의 대상에 따라서 별도로 지정하게 되며, 각각의 대상의 권한에 대응되는 숫자를 연결하여 L M N 형식으로 하나의 숫자로 표현하게 된다. 다음은 "764"로 표현되는 권한 유형을 대상에 따라 구분하여 설명한 것이다.

 

    L    -- 소유 사용자   -- 읽기, 쓰기, 실행         -- 4 + 2 +1        -- 7

    M   -- 소유 그룹      -- 읽기, 쓰기                 -- 4 + 2            -- 6

    N   -- 기타 사용자   -- 읽기                        -- 4                  -- 4


 

[사용 Example]

작업을 시작하기 전에 작업 대상이 되는 directory에 대한 상세 정보를 조회해 보면 다음과 같이 되어 있다. 여기서 "user_guide01.txt"에 대한 권한을 확인해 보기 바란다.

 

pi@raspberrypi ~ $ ls ./testdata -l

total 16

drwxr-xr-x 2 root root 4096 Mar 24 02:26 manual01

drwxr-xr-x 2 pi   pi   4096 Mar 24 02:26 manual02

-rwxrwx--- 1 pi   pi     18 Mar 24 02:10 user_guide01.txt

-rw-r--r-- 1 pi   pi     18 Mar 24 02:10 user_guide02.txt

 

먼저 "user_guide02.txt"에 대한 권한을 변경해 보도록 하겠다. 소유 사용자에게는 "읽기", "쓰기", "실행" 권한을 주고, 소유 그룹에게는 "읽기", "실행" 권한을 주고, 기타 사용자에게는 "실행" 권한을 부여해 보도록 하겠디이를 위해서는 소유 사용자에게는 "7", 소유

 그룹에게는 "5", 기타 사용자에게는 "1"를 지정하여 아래와 같이 작업을 한다. 작업이 완료된 이후에 파일에 대한 상세 정보를 다시 조회해 보면 "user_guide02.txt" 파일에 대한 권한이 아래와 같이 변경되어 있는 것을 확인할 수 있다

 

pi@raspberrypi ~ $ sudo chmod 751 ./testdata/user_guide02.txt

 

pi@raspberrypi ~ $ ls ./testdata -l

total 16

drwxr-xr-x 2 root root 4096 Mar 24 02:26 manual01

drwxr-xr-x 2 pi   pi   4096 Mar 24 02:26 manual02

-rwxrwx--- 1 pi   pi     18 Mar 24 02:10 user_guide01.txt

-rwxr-x--x 1 pi   pi     18 Mar 24 02:10 user_guide02.txt