목차
리눅스 특수 권한 설정
권한 설정
파일이나, 디렉토리의 권한 설정은 사용자,그룹의 접근에 대한 설정이기 때문에 매우 중요한 설정이라고 볼 수 있습니다. 리눅스의 장점 중 멀티 유저를 만족하기 위해 다수의 사용자에 따른 파일/디렉토리에 각각 다른 권한 설정이 필요합니다.
이 중에 특수 권한 설정에 대해서 알아보겠습니다.
특수 권한
특수 권한은 파일/디렉토리의 권한 설정 중 하나로 실행 권한에 관련한 설정이다. 파일/디렉토리 실행 시 관련 기능으로 사용되고, 표시되는 위치도 실행 권한의 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 |