/etc/passwd 참조
struct passwd 참조
--------------------------------------------------------------------------------------------
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
main()
{
/* 실제 사용자 ID를 알아 냄 */
printf("Userid : %d\n", getuid());
/* 실제 그룹 ID를 알아 냄 */
printf("Groupid : %d\n", getgid());
exit(0);
}
-------------------------------------------------------------------------------------------
#include <stdio.h>
#include <pwd.h>
#include <sys/types.h>
#include <unistd.h>
main()
{
uid_t uid;
struct passwd *pw;
/* 실제 사용자 ID를 얻어 옴 */
uid = getuid();
/* uid에 대한 사용자 정보를 얻어 옴 */
pw = getpwuid(uid);
/* pw->pw_name는 사용자 계정, pw->pw_uid은 사용자 ID, pw->pw_gid는
사용자가 속한 그룹 ID, pw->pw_dir는 사용자의 홈 디렉토리를 의미 */
printf("name:%s, uid:%d, gid:%d, home:%s\n", pw->pw_name, pw->pw_uid, pw->pw_gid, pw->pw_dir);
exit(0);
}
-------------------------------------------------------------------------------------------
#include <stdio.h>
#include <pwd.h>
#include <sys/types.h>
main()
{
struct passwd *pw;
/* 패스워드 파일로부터 사용자 정보를 차례로 읽어 출력 */
while (pw = getpwent()) {
/* pw->pw_name는 사용자 계정, pw->pw_uid은 사용자 ID,
pw->pw_dir는 사용자의 홈 디렉토리를 의미 */
printf("name:%s, uid:%d, home:%s\n", pw->pw_name, pw->pw_uid, pw->pw_dir);
}
/* 사용이 끝난 패스워드 파일을 닫음 */
endpwent();
exit(0);
}
-------------------------------------------------------------------------------------------
/etc/group 참조
struct group 참조
-------------------------------------------------------------------------------------------
#include <stdio.h>
#include <grp.h>
#include <sys/types.h>
main()
{
struct group *pg;
int i;
/* 그룹 파일로부터 그룹 정보를 차례로 읽어 출력 */
while (pg = getgrent()) {
printf("group name: %s\n member: ", pg->gr_name);
/* 그룹에 속한 사용자 계정 전부를 출력 */
for (i=0; pg->gr_mem[i]!=NULL; i++)
printf("%s ", pg->gr_mem[i]);
printf("\n\n");
}
/* 사용이 끝난 그룹 파일을 닫음 */
endgrent();
exit(0);
}
-------------------------------------------------------------------------------------------
#include <stdio.h>
#include <grp.h>
#include <unistd.h>
#include <sys/types.h>
main()
{
gid_t gid;
struct group *pg;
int i;
/* 그룹 ID를 얻음 */
gid = getgid();
/* 그룹 정보를 얻음 */
pg = getgrgid(gid);
printf("group name : %s\n", pg->gr_name); /* pg->gr_name은 그룹의 이름 */
exit(0);
}
-------------------------------------------------------------------------------------------
사용자 그룹정보를 알아내는 프로그램 구현하기
#include <stdio.h>
#include <string.h>
#include <pwd.h>
#include <grp.h>
#include <unistd.h>
#include <sys/types.h>
main()
{
uid_t uid;
gid_t gid;
struct passwd *pw;
struct group *pg;
int i;
uid = getuid(); /* 사용자 ID 얻어 옴 */
pw = getpwuid(uid); /* 패스워드 파일로부터 사용자 정보 얻어 옴 */
gid = getgid(); /* 그룹 ID 얻어 옴 */
pg = getgrgid(gid); /* 그룹 파일로부터 그룹 정보 얻어 옴 */
printf("uid=%d(%s) ", uid, pw->pw_name); /* 사용자 ID와 사용자 계정 출력 */
printf("gid=%d(%s) groups=", gid, pg->gr_name); /* 그룹 ID와 그룹 이름 출력 */
/* 그룹 파일로부터 모든 그룹 정보를 차례로 얻어 옴 */
while (pg = getgrent()) {
/* 해당 그룹에 속한 모든 사용자 계정에 대해 */
for (i=0; pg->gr_mem[i]!=NULL; i++) {
/* 프로그램의 사용자 계정(pw->pw_name)과 pg가 가리키는 그룹에 속한
사용자 계정이 같다는 것은 현 사용자가 pg 그룹에 속해있다는 것을
의미한다. 조건이 참이면 즉, 현 사용자 계정이 같으면
pg가 가리키는 그룹 이름을 출력한다. */
if (!strcmp(pw->pw_name, pg->gr_mem[i]))
printf("%d(%s) ", pg->gr_gid, pg->gr_name);
}
}
printf("\n");
exit(0);
}
'EMBEDDED > SYSTEM Proc' 카테고리의 다른 글
[Process] fork() 의 기본적인 사용방법 (0) | 2012.07.13 |
---|---|
[Normal] 파일 디렉토리 관련 예제 (0) | 2012.07.13 |
[Normal] 파일관련 예제들 (0) | 2012.07.13 |
[Normal] 환경변수 관련 예제 (0) | 2012.07.13 |
[Normal] getopt()함수 관련 예제 (0) | 2012.07.13 |