운영체제

linux getuid와 geteuid

Royal! 2025. 5. 19. 16:30
728x90
반응형

getuid()란?

  • 현재 계정의 접속권한을 보여주는 함수

geteuid()란?

  • 현재 어떤 권한으로 해당 프로세스가 동작하는지 보여주는 함수

 

UID란?

 

  • 특정 프로세스를 누가 실행했는지를 기록
  • uid : 0 → root권한을 뜻함
  • uid : 1000 → 일반 유저를 뜻함

 

EUID란?

 

  • euid(Effective UID)는 높아질 수도 있으며 낮아질 수도 있음
  • 이 프로세스가 무슨(어떤) 권한으로 동작하나를 판단할 때 보는 값

확인 코드 및 결과

root@royal:/home/ubuntu/modern_linux# id --user
0

root@royal:/home/ubuntu/modern_linux# vi getuid.c 
#include <unistd.h>
#include <stdio.h>
int main(){
        printf("UID : %d\\n", getuid());
        printf("EUID: %d\\n", geteuid());
}
---------------------------------------------------

root@royal:/home/ubuntu/modern_linux# ./getuidcode 
UID : 0
EUID: 0

===================================================
ubuntu@royal:~/modern_linux$ id --user
1000

ubuntu@royal:~/modern_linux$ ./getuidcode 
UID : 1000
EUID: 1000

EUID가 중요한 이유

  • 파일 소유주 root이며, 해당 파일에 chmod u+s(set-UID)를 설정했을 경우
  • 누가 실행하든 해당 프로세스(파일)의 EUID는 0(root)이 됨.
  • 즉 root가 실행한것 처럼 해당 프로세스(파일)에서는 모든 권한을 사용할 수 있게 됨
  • 만약 파일 소유주가 root가 아니라면, 해당 파일 소유주만큼의 권한을 획득
  • RUID와 EUID를 확인하는 방법
    • ps -o pid,ruid,euid,cmd -p $$ 명령어를 통해서 확인 가능
    ubuntu@royal:~/modern_linux$ ps -o pid,ruid,euid,cmd -p $$
        PID  RUID  EUID CMD
     724955  1000  1000 -bash
    

 

728x90
반응형