티스토리 뷰

반응형

리눅스를 사용하다보면 파일에 접근 권한이 없다는 것을 자주 볼 수 있을것이다.

간단하게 생각하면 내가 지금 접속한 계정이 해당 파일에 허용된 계정인가? 그룹인가?에 대한 문제입니다.

위의 그림처럼 그룹2에 있는 유저가 다른 그룹에 있는 파일을 접근하지 못하도록 막아두는 것이다.

그 권한중에서는 rwx(read, write, execute) 세개가 있다.

 

# ls -l
total 12
-rw------- 1 root root 2361 Sep 15 14:17 anaconda-ks.cfg
-rw-r--r-- 1 root root  608 Sep 15 14:17 anaconda-post.log
-rw------- 1 root root 2059 Sep 15 14:17 original-ks.cfg

 

현재 파일의 권한을 어디까지 허용하는지 변경하는 명령어는 chmod이다.

변경하는 방법은 2가지가 있는데 실수하지 않고 가독성이 좋게 심볼릭을 추천한다.

 

rwx rwx rwx: 심볼릭(현재 이 방법으로 권장)
-> $ chmod u+rwx,g-w,o=rw
        +: 퍼미션 추가
        -: 퍼미션 제거
        =: 퍼미션 강제 대입

   $ chmod 724 --> chmod u=rwx,g=w,o=r
                    chmod a=rwx (a는 u,g,o 모두 일괄 적용)
                    chmod u+s: Set UID
                          g+s: Set GID
                          o+t: Sticky

 

위와 같이 원하는 기능을 추가하면 되고 순서는 USER, GROUP, OTHER 이렇게 순서로 r(read), w(write), x(execute)를 추가 삭제 하면 된다.

 

** 주의 : 리눅스 글에서 갑자기 Mac인가 싶겠지만 숫자로 적용할때, BSD 커널에서는 맨 앞에 sticky bit를 두고 나머지 세개가 적용된다.

chmod 744 ---> GNU > chmod 0+744 ---> 0744

               BSD > chmod 00+744 ---> 7(bit/sticky)44

** sticky bit란?

https://blogger.pe.kr/384

 

Sticky bit 란 무엇인가? (Unix 와 Linux 운영체제)

유닉스와 리눅스에서 파일 퍼미션에 대한 공부를 하다보면 나오는 특수한 파일 퍼미션이 두개가 있다. 하나는 앞의 find 명령어에 대한 고찰(http://blogger.pe.kr/338)에서 조금 살펴본 setuid/setgid 이고

blogger.pe.kr

 

 

                        [S/B, PERM]     [KERNEL]
[USER] ---> access ---> FILESYSTEM ---> DAC(Defined Access Control(?)) ---> OBJECT 
                                        - rule set                         [FILE/DIR]
                                        - 8bit, rwx
                                                                            TRUE
student ---> ls, cp ... ---> syscall ---> userspace => kernel space => DAC  =>  discriptor
                                            [APP]       [call]        SB[8bit]  I/O
                                              \__DRIVE___/            ux=rw
                                                                      g=rw
                                                                      o=
                                                                       |
                                                                       |
                                                                       V
                                                                    NO ACCESS
                                                                    
DAC는 ring1 -> ring2

 

다음과 같은 과정으로 접근에 대해 확인한다.

참고) protection ring

커널이 메모리에 올라가면 하드웨어와 os의 채널을 열어준다.(BIOS <부팅>) 이후, 커널 모듈로 올라온다.
(ring0, ring1 kernel쪽, ring2, ring3이 user쪽)

https://ko.wikipedia.org/wiki/%EB%B3%B4%ED%98%B8_%EB%A7%81

(또한, root계정은 기본적으로 kernel권한이라서 권한이 없어도 모두 접근이 가능하다...)

 

다음으로 현재 파일의 접근 권한을 누구에게 줄지 소유권을 바꾸는 명령어인 chown이다.

 

  chmod(change mode, S/B)
 .------.               .---> # chgrp
/        \             /
-rwx rwx rwx 1 user group
               \______/
                 chown(change owner, SB)
                 -> chgrp: 그룹만 변경
                 -> chown: 사용자 및 그룹 변경
                    # chown user:group
                    # chown user
                    # chown :group
                    ---------------------
                    shift키가 불편해서 생긴 문법... + shift 오른손 권장

                    # chown user.       ;; BSD에서는 사용이 불가능
                    # chown .group      ;; BSD에서는 사용이 불가능
                     -> 이렇게 하면 user, group 모두 바뀜( : 도 마찬가지)

 

그룹 빼기: groupdel 명령어

 

다음과 같이 사용하면 되고, 만약 하나의 계정에 여러 개의 그룹이 속해있는 경우가 있다.

 

# usermod -aG <GROUP> <계정>


만약 그룹을 제거하고 싶으면 다음과 같이 하면 된다.

 

gpasswd -d <USER> <GROUP>

 

728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
250x250