Effective user id, 줄여서 euid라고 부르는데, 이는 우리가 프로그램이 실제로 실행시켰을 때의 user의 아이디를 말한다.
일반적으로는 현재 사용자의 id(uid)와 euid는 동일한 경우가 많은데 특수한 경우, 권한 상승을 해서 프로그램 작동해야할 때가 있다.
그 대표적인 예의 프로그램이 사용자의 비밀번호를 변경하는 passwd 프로그램이다.
passwd 명령어를 리눅스에서 실행하면,
osc@ubuntu:~$ passwd
Changing password for osc.
(current) UNIX password:
다음과 같이 현재 비밀번호와 새로운 비밀번호를 입력하는 프로그램이 실행된다.
passwd 프로그램은 새로운 비밀번호를 저장해서 /etc/shadow 라는 파일에 암호화되어 저장되는데 /etc로 이동해 ls -l을 입력하고 shadow 파일의 읽기쓰기 권한을 보면, root 권한일 때만 읽기 쓰기가 가능하다.
-rw-r----- 1 root shadow 941 Jan 25 2018 shadow
-rw------- 1 root root 941 Jan 25 2018 shadow-
따라서 passwd 프로그램은 shadow 파일에 쓰기를 하려면 필연적으로 root로 권한 상승을 해야한다.
passwd 프로그램이 루트 권한으로 실행되는 지 확인해보자!
&명령어는 프로그램이 백그라운드에서도 동작이 되도록 한다. passwd&를 입력해 우선 background에서 passwd 프로그램이 동작하도록 하자.
그런 다음, ps -ef를 입력해, 현재 실행중인 모든 프로세스를 출력해서, passwd 프로그램을 찾아보자.
root 1151 1139 0 05:57 tty1 00:00:00 passwd
passwd 프로그램이 root권한으로 실행되고 있는 모습을 확인할 수 있다.