일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 파이썬 프로젝트
- 파이썬
- 파이썬 유튜브
- PDF 개행문자
- 통계 #ROC #TPR #FPR #TNR #이진분류 #Accuracy #Recall
- 파파고 꿀팁
- 파이썬 #
- 파이썬 예시
- 파이썬 #파이썬프로젝트 #파이썬 예시 #파이썬 파일경로 #파이썬 자동화
- 스트림 암호 one-time-pad 공격#보안#암호
- 파이썬 열
- QGC#QGrouncControl#GLIB오류
- 파이썬 채팅
- 리눅스기초#리눅스명령어#리눅스 tail#tail#모의해킹 리눅스
- 파이썬 파일 전송
- 파파고 번역
- pdf 번역
- 파이썬#subprocess#communicate()
- 파이썬 음성인식
- 파이썬#파이썬경로#파이썬폴더#파이썬디렉토리
- 파이썬 음성파일 텍스트 변환
- 논문번역 꿀팁
- 파이썬 텍스트 변환 #파이썬 공부
- 파이선 행
- ROS #spin() #spinOnce() #ROS기초
- ROS #Robotics #ROS기초
- 패스트 캠퍼스 #자율주행 #비전
- 파이썬 엑셀 파일 읽고 쓰기
- 크롬오류#크롬검색어자동완성끄기#검색어자동완성오류#검색어자동완성 제거#검색어 노란선#검색어반복입력
- 리눅스#모의해킹#리눅스명령어#head 명령어
개발자비행일지
UID, EUID, RUID 본문
RUID와 EUID의 차이는 무엇일까? 그리고 운영체제에서 각각은 어떻게 쓰일까?
1. RUID(Real User ID)
1.1 이는 리눅스에서 사용자를 식별하는 데 사용하는 양의 정수로서 0부터 32767 까지 사용한다(16비트). 이 UID에 따른 읽기, 쓰기, 실행 권한 설정함으로써, 프로세스에 대해 소유자 별로 권한을 줄 수 있으며, 이 값은 변하지 않는다. 하지만 Root 권한 일 때는 수정 가능하다.
2. EUID(Effective User ID)
2.1 EUID는 SetUID 권한이 설정된 실행 파일에 의해 변경되며, 일시적으로 다른 계정의 UID를 저장해서 사용할 수 있도록 해준다. 즉 일시적으로 파일 소유자의 권한을 얻게 되는 것이다. 예를 들어 ping이나, passwd 같은 경우, 실행을 위해 Root 권한이 필요하지만, 일반 사용자 모두에게 Root권한을 줄 수 없기 때문에 해당 프로그램이 실행될 때, Root 권한이 되도록 EUID로 Root 권한을 실행되는 순간에만 준다.
-
운영체제 에서는 id 명령어를 통해서 현재 자신의 그룹과 id를 알 수 있다.
-
그리고 chmod 명령어를 통해서 파일이나 디렉토리의 사용자를 변경 혹은 삭제 가능하게 만들 수 있다. 또한 SetUID나 를 통해서 EUID를 설정해 줄 수 있다. Sticky bit를 통해서 해당 파일의 소유자에게만 쓰기 권한을 제공하도록 설정해 줄 수 도 있다.
그렇다면 이러한 RUID와 EUID 방식이 시스템 보안에 영향을 주는 경우가 발생하진 않을까? 이 부분과 관려해서 우리는 다음의 문제를 고민해 볼 수 있다.
Setuid 취약점이 있는 사용 예시, 1. system함수를 통해서 system(“/bin/bash”)를 수행하는 vuln.c를 작성하여, system 함수를 사용하면 루트사용자의 권한을 획득 할 수 있음을 활용한다. 2. more 명령어에 SetUID 비트를 부여하여, root권한이 필요한 /etc/shadow 파일에 접근 가능하다. 3. system함수를 활용해서 system(“/bin/vi”)를 수행하는 vuln2.c를 작성하여 실행하면 루트권한으로 상승되고 여러 일을 할 수 있다.
이를 방지하기 위해선 find 명령어로 SetUID가 설정된 파일이나 디렉토리를 찾고, 이 중에서 정말 필요한 곳에만 사용해야 한다.
find / -user root -perm -4000 -> SetUID
find / -user root -perm -2000 -> SetGID
'▶ Computer Science' 카테고리의 다른 글
리눅스 기초 명령어 head (0) | 2020.07.23 |
---|---|
혼동된 대리인 문제(confused deputy problem) (0) | 2020.07.01 |
MMU(Memory management unit) 가상메모리, 물리메모리 변환 과정 (0) | 2020.06.30 |
TLB(Translation -Lookaside Buffer) 변환- 색인 버퍼 (0) | 2020.06.30 |
파일시스템(File System) (0) | 2020.02.06 |