리눅스/개념

[LINUX]특수 권한 및 파일 설정

ㅎㄷㄹㅁㅇ 2023. 12. 7. 13:59
반응형

목차

    리눅스 특수 권한 설정

    권한 설정

    파일이나, 디렉토리의 권한 설정은 사용자,그룹의 접근에 대한 설정이기 때문에 매우 중요한 설정이라고 볼 수 있습니다. 리눅스의 장점 중 멀티 유저를 만족하기 위해 다수의 사용자에 따른 파일/디렉토리에 각각 다른 권한 설정이 필요합니다.
    이 중에 특수 권한 설정에 대해서 알아보겠습니다.

     

     

    특수 권한

    특수 권한은 파일/디렉토리의 권한 설정 중 하나로 실행 권한에 관련한 설정이다. 파일/디렉토리 실행 시 관련 기능으로 사용되고, 표시되는 위치도 실행 권한의 x 대신 다른 형태로 표시됩니다.

    7777권한은 0777의 권한에 7의 특수권한을 추가한 것으로 SetUID,SetGID,StickBit를 추가 한 것입니다.
    SetUID(4000) + SetGID(2000) + StickyBit(1000)


    SetUID(2^2)

    setuid 가 붙은 프로그램은 실행 시 소유자의 권한으로 전환됩니다.

    • 해당 파일 소유자의 권한을 사용합니다.
    • 파일에 설정하면 user 권한에 x대신 s가 들어갑니다.
    • 적용된 파일을 실행하면 실행 파일이 끝날 때 까지 파일 소유자의 UID로 실행

     

     

    SetGID(2^1)

    setgid 가 붙은 프로그램은 실행 시 소유 그룹의 권한으로 전환됩니다.

    • 해당 파일 소유자의 권한을 사용합니다.
    • 파일에 설정하면 group 권한에 x대신 s가 들어갑니다.
    • 적용된 파일을 실행하면 실행 파일이 끝날 때 까지 파일 소유자의 GID로 실행
    • 디렉토리에 SetGID를 설정하게 될 경우 내부 파일들도 SetGID가 적용됩니다.

     

    Sticky Bit(2^0)

    Sticky Bit가 설정된 디렉터리는 누구나 파일을 만들수 있지만 자신의 소유가 아닌 파일은 삭제할 수 없습니다. 즉 일종의 공유 디렉터리라고 볼 수 있습니다. Sticky Bit를 사용 중인 대표적인 디렉터리는 /tmp입니다.
    디렉터리에 Sticky Bit를 사용할 때는 누구나 읽고, 쓰고, 실행할 수 있도록 777 권한을 줘야 합니다.

    특정 디렉토리를 어떤 사용자든 자유롭게 사용 할 수 있게 하기 위해 사용합니다.

    디렉토리 및 파일은 누구나 생성 할 수 있습니다.

    Sticky Bit 사용 시 디렉토리의 소유자, 파일소유자, 관리자가 아닌 사용자들은 삭제하지 못합니다.

    파일에 설정하면 other 권한에 x대신 s가 들어갑니다.

     

    $ stat /tmp
      File: /tmp
      Size: 249       	Blocks: 0          IO Block: 4096   directory
    Device: fd00h/64768d	Inode: 134296064   Links: 9
    Access: (1777/drwxrwxrwt)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: system_u:object_r:tmp_t:s0
    Access: 2023-12-06 21:44:24.104232646 -0500
    Modify: 2023-12-06 23:31:15.417471654 -0500
    Change: 2023-12-06 23:31:15.417471654 -0500
     Birth: 2023-11-15 00:58:48.214005559 -0500

    SetUID,SetGID 사용 이유
    SetUID / SetGID 가 필요한 이유는 일반 사용자가 변경할 수 없는 파일이지만 변경이 필요한 경우가 있어서 입니다.
    예를 들어 사용자의 암호를 담고 있는 /etc/shadow 파일은 root 만 읽을 수 있고 수정은 불가능하지만 사용자가 암호를 변경할 경우 /etc/shadow 파일이 변경되어야 합니다.
    암호를 변경하는 /usr/bin/passwd 는 setuid 비트가 붙어 있으며 이 비트가 있으면 실행 시 파일의 소유자 권한으로 전환되어 root 권한으로 /etc/shadow 파일에 변경된 암호를 기록할 수 있게 됩니다.


    보안
    SetUID / SetGID / StickyBit는 보안에 큰 위협이 되며 이때문에 SELinux 같은 강제 접근 통제(MAC; Mandatory Access Control) 가 필요합니다.

     

     

    파일 속성

    허가권이나 소유권과는 다르게 파일을 관리하는 개념입니다. chattr,lsattr 명령어를 통해 파일 속성을 변경하는 것을 막고 파일의 손상을 막을 수 있습니다.

    • lsattr은 파일 속성을 확인하는 명령어입니다.
    • chattr은 파일 속성을 변경하는 명령어입니다. (+,- 옵션을 통해 추가/삭제가 가능합니다.)

     

    예시

    • lsattr을 통해 현재 상태 확인
    $ lsattr fstab 
    -------------------- fstab

     

    • 삭제 불가 속성 추가
    // 삭제 불가 속성 추가 후 파일 삭제
    $ chattr +i fstab
    -------------------- fstab
    $ lsattr fstab
    ----i--------------- fstab
    $ rm -rf fstab
    rm: cannot remove 'fstab': Operation not permitted  
    
    // 삭제 불가 속성 제거 후 파일 삭제 
    $ chattr -i fstab 
    $ lsattr fstab
    -------------------- fstab 
    $ rm -rf fstab  $ ls -1

    연관 tag : #
    연관 문서 : [LINUX]특수 권한 ,파일 설정
    참고 : https://www.lesstif.com/lpt/linux-setuid-setgid-sticky-bit-93127311.html
    https://it-serial.tistory.com/entry/Linux-특수-권한-②-setUID-setGID-Sticky-Bit-파일-속성chattr

    이 글은 Obsidian 노트에서 작성하여 업로드 하는 글입니다.

    반응형

    '리눅스 > 개념' 카테고리의 다른 글

    [LINUX] iscsi.service vs iscsid.service  (0) 2024.08.28
    [LINUX]라우팅 매트릭 및 최적 경로  (2) 2023.11.18
    [오픈스택] TripleO란?  (0) 2023.03.10
    [LINUX] ANSIBLE (앤서블)이란?  (0) 2022.02.27
    [LINUX]HA Pacemaker란?  (0) 2021.01.06
    TOP