1 사용법
#include <sys/types.h>
#include <unistd.h>
uid_t getuid(void);
uid_t geteuid(void);
2 설명
getuid()는 현재 프로세스의 실제 유저 아이디를 얻어온다.
geteuid()는 현재 프로세스의 유효 유저 아이디(effective user ID)를 언어온다.
실제 유저 아이디는 프로세스를 호출한 유저의 아이디이다. 유효 유저 아이디는 실행된 파일에 설졍된 SID를 가지는 아이디이다.
3 반환값
유저의 ID를 되돌려준다.
4 에러
이 함수들은 언제나 성공한다. 에러 없음~
5 예제
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
int main(){
struct passwd *lpwd;
printf("UID : %d\n",getuid());
printf("EUID:%d\n",geteuid());
lpwd = getpwuid(getuid());
printf("UNAME : %s\n", lpwd->pw_name);
lpwd = getpwuid(geteuid());
}
위의 프로그램은 프로세스를 싱행 시킨 유저의 ID와 이름, 프로세스의 SID 와 이름을 출력한다. SID를 변경했을 때의 결과를 확인하기 위해서는 다음과 같이 root계정으로 해당 프로그램에 SID를 부여한다음 다른 계정의 유저로 프로그램을 실행시켜 보면 된다.
#chmod +s getuid
'os > 리눅스' 카테고리의 다른 글
500 OOPS: could not open chroot() list file:/etc/vsftpd/chroot_list (1) | 2009.11.29 |
---|---|
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (0) | 2009.11.29 |
access() (0) | 2009.11.02 |
unlink() (0) | 2009.11.02 |
Race Condition (0) | 2009.10.31 |