리눅스 시스템에서는 로긴 이름과 유효 사용자 계정 이름을 확인하는 getlogin, cuserid 함수를 제공하고 있습니다. 로긴 이름은 실제 사용자 ID와 대응하는 계정의 이름입니다.
#include <unistd.h >
char *getlogin(void);
#include <stdio.h>
char *cuserid(char *buf);
getlogin 함수는 원격이나 rsh 등에서 로긴하여 호출하면 null을 반환합니다. 다음 예제는 로긴 이름과 유효 사용자 이름을 출력하는 예제 코드입니다.
/********************************************************************** * ex_username.c * * exmple source – print login user name and effective user name * **********************************************************************/ #include <stdio.h> #include <unistd.h> int main(int argc, char **argv) { char buf[256]=""; printf("login user name:%s\n", getlogin()); cuserid(buf); printf("effective user name:%s\n",buf); return 0; }
다음은 ex_username 실행 파일을 실행하였을 때 로긴 이름과 유효 사용자 이름을 확인하는 화면입니다. 테스트 조건이 가상 터미널이라 로긴 이름은 구하지 못하여 null을 반환하고 있으며 유효 사용자 이름은 로긴 이름과 같음을 알 수 있습니다.
반면 set user id 비트를 설정하였을 때는 현재 로긴 이름과 관계없이 소유자 이름(set user id 계정 이름)임을 알 수 있어요.