[11] 허가권, 소유권, chmod, chown, chgrp

|


- 2014.11.20



1. 허가권


ls -l 로 봤을때 맨 앞에 있는 것 : 허가권


                 Owner           Group           Other

           -    r  w  x          r  w  x         r  w  x

       파일     4  2  1         4  2  1         4  2  1             // 각각은 2진수로 2^2, 2^1, 2^0  을 뜻한다.

                        7                7                 7                 // 각 자리의 합을 모두 더해서 나온 숫자

                   x100 = 700      x10 = 70        x1 = 7

           d

    디렉터리


rEAD : 읽기

wRITE : 쓰기

ExECUTE : 실행, 접근


* 741 : Owner은 rwx, Group은 r,  Other은 x 의 권한이 있다는 뜻.



1) x 의 의미


파일 : x가 없다 -> 문서파일, x가 있다 -> 실행파일

디렉터리 : 접근. -> 디렉터리의 경우 디렉터리에 접근(x)을 해야 읽거나(r) 쓸수(w)있다.




2) 파일에서의 권한


r : cat, more, vim, cp 등과 같은 파일의 내용을 읽어 들이는 것과 관련이 있다.

w : cat, echo, vim 등과 같은 파일의 내용을 수정, 변경하는 것과 관련이 있다.

    vim 같은 경우는 :wq!로 저장이 가능하지만 소유주가 변한다.

x : 실행 여부와 관련이 있다.




3) 디렉터리에서의 권한


r : ls, dir 등과 같은 디렉터리 내부 내용을 읽어 들이는 것과 관련이 있다.

w : mkdir, touch, rm, mv 등과 같은 디렉터리 내부에 생성, 삭제와 관련이 있다.

x : 디렉터리의 접근과 관련이 있다. x가 없다는 것은 대부분의 명령어를 이용할 수 없게 된다.




4) 권한 부여


권한을 부여하는 방법은 크게 2가지가 있다.


- numeric method

ex)

# chmod 456 file_dir


- symbolic method

Owner : u / Group : g / Other : o

ex)

# chmod g+r file_dir

# chmod o-x file_dir

# chmod g+r_x,o+w file_dir



ex)

# touch ./test

# ll

합계 0

-rw-r--r-- 1 root root 0 2014-11-20 13:08 test

   6  4  4 의 권한이 부여되어 있음.


예제를 위해 모든 권한 제거

# chmod 000 ./test

# ll

합계 0

---------- 1 root root 0 2014-11-20 13:08 test


그룹에 읽기, 실행 권한 주기

# chmod g+rx ./test

# ll

합계 0

----r-x--- 1 root root 0 2014-11-20 13:08 test


Other 에게 읽기, 쓰기, 실행 권한 주기

# chmod o+xrw ./test

# ll

합계 0

----r-xrwx 1 root root 0 2014-11-20 13:08 test




[문제1]


/backup/inittab 파일을 현재디렉토리(/export/home/samadal/)에 복사후 변경


numeric method 방법으로 변경    ->  r w - - w - - w x

symbolic method 방법으로 변경   ->  - w x r - x r w -

numberic method 방법으로 변경  ->  r - x - w - r w -


# cp /backup/inittab ./


nemeric method

# chmod 623 ./inittab

# ll

합계 4

-rw--w--wx 1 root root 884 2014-11-20 13:14 inittab

----r-xrwx 1 root root   0 2014-11-20 13:08 test


symbolic method

# chmod u+x-r ./inittab

# chmod g+rx-w ./inittab

# chmod o+r-x ./inittab

(= chmod u+x-r,g+rx-w,o+r-x ./inittab  // 콤마(,)에 띄어쓰기 금지)


numberic method

# chmod 526 ./inittab

# ll

합계 4

-r-x-w-rw- 1 root root 884 2014-11-20 13:14 inittab

----r-xrwx 1 root root   0 2014-11-20 13:08 test




[문제]


internet explorer 실행시킨 후 자신의 linux ip를 입력 후 화면 출력  -> 아파치가 깔려있는 경우 아파치 기본 화면 로딩

d드라이브에 있는 index.html을 linux로 업로드를 하세요.           -> 기본 index 파일 생성 후 진행

업로드가 되면 putty로 가셔서 index.html 파일을 /var/www/html/ 디렉터리로 이동시킨 후

internet explorer 를 F5 눌러보세요.


윈도우 cmd, ftp 를 이용하여 업로드 후

# mv ./index.html /var/www/html/ 한 뒤 internet explorer 에서 F5 누르면 됨




[추가]


/val/www/html/ 디렉터리에 있는 index.html 의 권한을 변경하면서

변경시마다 internet explorer 에서 F5를 눌러서 변경사항이 있는지 확인


r w - r - - r - -

        # chmod 644 /var/www/html/index.html

        -> 보여짐


- w - r - - r - -

        # chmod 244 /var/www/html/index.html

        -> 보여짐


r - - r - - r - -

        # chmod u+r-w /var/www/html/index.html

        -> 보여짐


r w - - - - r - -

        # chmod u+w,g-r /var/www/html/index.html

        -> 보여짐


r w - r - - - - -

        # chmod g+r,o-r /var/www/html/index.html

        -> 안보여짐 (Forbidden error)


=> Other의 r  권한이 없기 때문에 index.html 파일을 열 수가 없다.




[문제]


/var/www/디렉터리에 있는 html/ 디렉터리의 권한을 변경하면서

변경시마다 internet explorer에서 F5를 눌러서 변경사항이 있는지 확인하세요


r w x r - x r - x

        # chmod 755 /var/www/html/

        -> 보여짐


- w x r - x r - x

        # chmod 355 /var/www/html

        -> 보여짐


r - x r - x r - x

        # chmod 555 /var/www/html/

        -> 보여짐


r w - r - x r - x

        # chmod 655 /var/www/html/

        -> 보여짐


r w x - - x r - x

        # chmod u+x,g-r /var/www/html/

        -> 보여짐


r w x r - - r - x

        # chmod g+r-x /var/www/html/

        -> 보여짐


r w x r - x - - x

        # chmod g+x,o-r /var/www/html/

        -> 보여짐, 단 Other 권한으로 html 디렉터리 안을 볼 수 없음


r w x r - x r - -

        # chmod o+r-x /var/www/html/

        -> 아파치 기본 화면 보여짐


=> html 디렉터리의 경우 x 권한이 없는 경우 index.html 파일을  불러올 수 없음.





[문제]


※ user 홈 디렉터리는 700 권한이다.

홈디렉터리에 000 ~ 700 권한 변경 하면서 ftp 접속은 되는지, 파일 업로드는 되는지 해보세요


000 : FTP 로그인 실패

100 : FTP 로그인 성공, 업로드 실패, 목록 보기 실패

200 : FTP 로그인 실패

300 : FTP 로그인 성공, 업로드 성공, 목록 보기 실패

400 : FTP 로그인 실패

500 : FTP 로그인 성공, 업로드 실패, 목록 보기 성공

600 : FTP 로그인 실패

700 : FTP 로그인 성공, 업로드 성공, 목록 보기 성공




[결론]


x 권한이 있어야지만 FTP 접속 성공 (100, 300, 500, 700)

x,w 권한이 있어야 FTP 접속 후 업로드 가능 (300, 700)

        300 vs 700 : 목록 보기 가/불가 여부





2. 소유권


소유권 변경 : chown


현재 HOME 디렉터리에 있는 파일 모두 삭제 후 /backup/ 의 3개 파일 모두 복사해온다.


# rm ./*

# cp /backup/* ./

# ll

합계 12

-rw------- 1 root root  739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 root root  884 2014-11-20 14:54 inittab

-rw-r--r-- 1 root root 1816 2014-11-20 14:54 login.defs




1) 소유자 변경


grup.conf 의 소유자를 samadal로 변경

# chown samadal ./grub.conf

# ll

합계 12

-rw------- 1 samadal root  739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 root    root  884 2014-11-20 14:54 inittab

-rw-r--r-- 1 root    root 1816 2014-11-20 14:54 login.defs



2) 소유자 + 그릅소유권한 변경


inittab 파일의 소유자와 그룹소유권한을 samadal로 변경

# chown samadal:samadal ./inittab

# ll

합계 12

-rw------- 1 samadal root     739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 samadal samadal  884 2014-11-20 14:54 inittab

-rw-r--r-- 1 root    root    1816 2014-11-20 14:54 login.defs


login.defs 파일의 소유자는 samadal로, 그룹소유권한은 user1로 변경

# chown samadal:user1 ./login.defs

# ll

합계 12

-rw------- 1 samadal root     739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 samadal samadal  884 2014-11-20 14:54 inittab

-rw-r--r-- 1 samadal user1   1816 2014-11-20 14:54 login.defs



*

chown 을 통해 소유권 변경 시 UID 및 GID는 각각 /etc/passwd, /etc/group 에서 정보를 얻어 변경한다.

(: 대신 . 으로도 사용 가능하다.)




3) 소유자 & 그룹 동시 변경


# chown root. ./inittab

# ll

합계 12

-rw------- 1 root    samadal  739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 root    root     884 2014-11-20 14:54 inittab

-rw-r--r-- 1 samadal user1   1816 2014-11-20 14:54 login.defs




4) 그룹만 변경


# chown .root ./login.defs    ( = chgrp samadal ./inittab)

# ll

합계 12

-rw------- 1 root    samadal  739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 root    root     884 2014-11-20 14:54 inittab

-rw-r--r-- 1 samadal root    1816 2014-11-20 14:54 login.defs




And