리눅스/개념

[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