Notice
Recent Posts
Recent Comments
Link
«   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
Tags
more
Archives
Today
Total
관리 메뉴

나의 IT일지

특수 권한과 권한 제어 본문

정보보안

특수 권한과 권한 제어

세레프 2023. 6. 19. 23:10

특수권한

 권한에는 소유권과 허가권으로 나뉘며, 계정이 파일/ 디렉토리를 소유할 수 있는 권한을 소유권, 소유권에 따라 파일/ 디렉토리를 수정, 생성, 삭제, 진입 등을 할 수 있는 권한을 허가권이라고 한다. 즉 계정은 파일/ 디렉토리의 소유권과 허가권에 따라 사용할 수 있는 기능이 달리진다. 

 일반적으로 읽기, 쓰기, 실행 및 진입을 통해 계정에게 권한을 부여하지만 특수권한을 통해 추가적으로 게정에게 권한을 부여할 수 있다. 이를 특수권한이라 하는데, 특수권한일반 권한 외에 추가적으로 부여되는 권한으로, SetUID, SetGID, Stickybit이 있다. 

  • SetUID
    • 파일에 대한 UID소유권을 가지고 있지 않은 계정이 UID 소유권을 가지고 있는 계정을 호출해서 해당 피일을 실행하는 파일 특수 권한
      • 일반 사용자가 관리자 권한으로 명령어를 실행하기 위함
      • 이때, 실행시키려는 계정의 허가권 중에 x 권한이 있어야 함
    • symbolic 기법으로는 s/S로 설정하며, numeric 기법으로는 4000으로 설정한다.
      • x 권한이 없을 경우 : S로 표시
      • x 권한이 있을 경우 : s로  표시
    • chmod 4xxx [파일 경로] : 해당 파일을 SetUID 권한을 가지도록 설정
    • chmod u+s [파일 경로] : 해당 파일에 SetUID 권한 부여
    • find / -perm -u=s :  파일 중 SetUID권한을 가진 파일 탐색
#include<stdio.h>

int main(){
    int ruid,euid;
    
    ruid = getuid(); //계정의 UID
    euid = geteuid(); //해당 파일을 실행하는 UID
    
    printf("RUID = %d\n",ruid);
    printf("EUID = %d\n",euid);
    return 0;
}
SetUID를 사용하지 않을 경우 SetUID를 사용한 경우
리눅스에서 코드 파일 실행 방법
1. yum groupinstall "Development Tools" : 개발 툴 설치
2. vi [파일명].c : c파일 편집후 생성
3. gcc -o [컴파일한 뒤의 파일명] [파일명].c : c파일을 컴파일
4. ./[파일명] : 현 디렉토리의 파일을 실행

 

  • SetGID
    • 해당 디렉토리에 파일 / 디렉토리를 생성할 경우 그룹이 고정시키는 디렉토리 특수 권한
      • 이때, 파일/ 디렉토리를 생성하는 계정의 허가권중에 r 권한이 있어야 함
    • symbolic 기법으로는 s/S로 설정하며, numeric 기법으로는 2000으로 설정한다.
      • x 권한이 없을 경우 : S로 표시
      • x 권한이 있을 경우 : s로  표시
    • chmod 2xxx [디렉토리 경로] : 해당 디렉토리을 SetGID 권한을 가지도록 설정
    • chmod g+s [디렉토리 경로] : 해당 디렉토리에 SetGID 권한 부여
    • find / -perm -g=s :  디렉토리 중 SetGID권한을 가진 파일 탐색

 

  • Stickybit
    • 파일 생성은 자유롭지만 삭제는 소유권을 가진 계정만 삭제 가능하도록 하는 디렉토리 특수 권한
      • OTHER의 w권한을 가지고 있더라도 소유권이 없으면 생성만 가능
    • symbolic 기법으로는 t/T로 설정하며, numeric 기법으로는 1000으로 설정한다.
      • x 권한이 없을 경우 : T로 표시
      • x 권한이 있을 경우 : t로  표시
    • chmod 1xxx [디렉토리 경로] : 해당 디렉토리에 Stickybit 권한을 가지도록 설정
    • chmod o+t [디렉토리 경로] : 해당 디렉토리에 Stickybit 권한 부여
    • find / -perm -o=t :  디렉토리 중 Stickybit 권한을 가진 파일 탐색

 

그 외의 접근 제어

  • 접근 제어 목록
    • 파일/ 디렉토리의 권한을 계정별로 주는 방식
      • getfacl [파일/ 디렉토리 경로] : 파일/ 디렉토리 권한 확인 명령어
      • setfacl -m u:[계정명]:[권한] [파일/ 디렉토리 경로] : 파일 / 디렉토리의 권한을 계정에 따로 부여
      • setfacl -m g:[그룹명]:[권한] [파일/ 디렉토리 경로] : 파일 / 디렉토리의 권한을 그룹에 따로 부여
      • setfacl -x u:[계정명]:[권한] [파일/ 디렉토리 경로] : 계정에 따로 부여한 파일 / 디렉토리의 권한을 삭제
      • setfacl -x g:[그룹명]:[권한] [파일/ 디렉토리 경로] : 그룹에 따로 부여한 파일 / 디렉토리의 권한을 삭제
  • 파일/ 디렉토리 속성변경
    • 권한 외에 파일/디렉토리의 속성을 변경해서 모든 계정에 대해서 해당 파일의 접근을 제어하는 방식
      • lsattr [파일/디렉토리 경로] : 파일/ 디렉토리의 속성을 확인하는 명령어
      • chattr +[옵션] [파일/디렉토리 경로] : 해당 파일/ 디렉토리에 속성 추가하는 명령어
      • chattr -[옵션] [파일/디렉토리 경로] : 해당 파일/ 디렉토리에 속성 삭제하는 명령어
옵션 의미
수정금지
d dump백업 금지
c 압축저장
a 추가만 가능
s 블럭0으로 다시 디스크 쓰임
S 디스크상에 동기화
u 복구가능

 


관리자 권한 실행

 일반 사용자가 관리자의 권한을 일부 받아 사용하도록 함으로써 최상위 관리자의 계정이 아닌 권한을 받은 사용자 계정으로 관리할 수 있도록 한다.

  • sudo [멍령어] : 해당 명령어를 관리자 권한으로 실행하도록 하는 명령어
    • 관리자가 사용할 수 있는 권한을 일부 부여하기 위해서는 "/etc/sudoers"파일에 부여할 권한을 작성, 수정해야 한다. 
    • 관리자의 90퍼의 권한을 사용하기 위해서는 wheel 그룹에 해당 사용자를 추가하면 된다.
  • visudo : /etc/sudoers파일을 VI 편집기로 출력하는 명령어

/etc/sudoers

'정보보안' 카테고리의 다른 글

NCS)관리적 보안 구축  (0) 2023.06.21
링크와 쉘  (0) 2023.06.20
권한 적용  (0) 2023.06.16
리눅스 계정과 권한  (0) 2023.06.15
VLSM과 supernetting  (0) 2023.06.14
Comments