[태그:] <span>cuserid</span>

리눅스 시스템에서는 로긴 이름과 유효 사용자 계정 이름을 확인하는 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 계정 이름)임을 알 수 있어요.

[그림 8.11] ex_username 실행 화면
[그림 8.11] ex_username 실행 화면

리눅스 시스템 프로그래밍