K 개발자
사용자 관련 정보 검색 본문
로그인명과 UID 검색
로그인명 검색 : getlogin(3)
#include <unistd.h>
char *getlogin(void);
로그인명 검색 : cuserid(3)
#include <stdio.h>
char *cuserid(char *s);
// s : 검색한 로그인명을 저장할 주소
uid 검색 : getuid(2), geteuid(2)
#include <sys/types.h>
#include <unistd.h>
uid_t getuid(void);
uid_t geteuid(void);
패스워드 파일 검색
/etc/passwd 파일에는 로그인명, UID, GID, 사용자의 홈 디렉토리, 로그인 쉘 등 사용자에 관한 기본적인 정보가 들어 있다.
passwd 구조체
/etc/passwd 파일의 정보를 읽어오려면 passwd 구조체를 사용해야 한다.
passwd 구조체는 <pwd.h> 파일에 정의되어 있다.
struct passwd {
char *pw_name;
char *pw_passwd;
uid_t pw_uid;
gid_t pw_gid;
char *pw_age;
char *pw_comment;
char *pw_gecos;
char *pw_dir;
char *pw_shell;
};
UID로 passwd 파일 읽기 : getpwuid(3)
#include <pwd.h>
struct passwd *getpwuid(uid_t uid);
// uid : 검색할 UID
이름으로 passwd 파일 읽기 : getpwnam(3)
#include <pwd.h>
struct passwd *getpwnam(const char *name);
// name : 로그인명
/etc/passwd 파일을 순차적으로 읽기 : getpwent(3), setpwent(3), endpwent(3), fgetpwent(3)
#include <pwd.h>
struct passwd *getpwent(void);
void setpwent(void);
void endpwent(void);
struct passwd *fgetpwent(FILE *fp);
// fp : 파일 포인터
섀도우 파일 검색
/etc/passwd 파일은 누구나 읽을 수 있기 때문에 보안 문제가 발생할 수 있어 현재 대부분의 유닉스 시스템은 사용자 패스워드를 /etc/shadow 파일에 별도로 저장하고 있다.
spwd 구조체
/etc/shadow 파일을 읽어오려면 spwd 구조체를 사용해야 한다.
spwd 구조체는 <shadow.h> 파일에 있다.
struct spwd {
char *sp_namp;
char *sp_pwdp;
int sp_lstchg;
int sp_min;
int sp_max;
int sp_warn;
int sp_inact;
int sp_expire;
unsigned int sp_flag;
};
/etc/shadow 파일 검색 : getspnam(3)
#include <shadow.h>
struct spwd *getspnam(const char *name);
// name : 검색할 사용자명
/etc/shadow 파일을 순차적으로 읽기 : getspent(3), setspent(3), endspent(3), fgetspent(3)
#include <shadow.h>
struct spwd *getspent(void);
void setspent(void);
void endspent(void);
struct spwd *fgetspent(FILE *fp);
// fp : 파일 포인터
그룹 정보 검색
그룹 ID 검색하기 : getgid(2), getegid(2)
#include <sys/types.h>
#include <unistd.h>
gid_t getgid(void);
gid_t getegid(void);
그룹 파일 검색
유닉스에서는 그룹에 관한 정보를 /etc/group 파일에 별도로 저장한다.
group 구조체
/etc/group 파일에 저장된 그룹 정보를 읽어오려면 group 구조체를 사용해야 한다.
group 구조체는 <grp.h> 파일에 정의되어 있다.
struct group {
char *gr_name;
char *gr_passwd;
gid_t gr_gid;
char **gr_mem;
};
/etc/group 파일 검색 : getgrnam(3), getgrgid(3)
#include <grp.h>
struct group *getgrnam(const char *name);
struct group *getgrgid(gid_t gid);
// name : 검색하려는 그룹명, gid : 검색하려는 그룹의 ID
/etc/group 파일을 순차적으로 읽기 : getgrent(3), setgrent(3), endgrent(3), fgetgrent(3)
#include <grp.h>
struct group *getgrent(void);
void setgrent(void);
void endgrent(void);
struct group *fgetgrent(FILE *fp);
// fp : 파일 포인터
로그인 기록 검색
현재 시스템에 로그인하고 있는 사용자에 관한 정보와 시스템의 부팅 시각 정보나 사용자 로그인 기록 등의 정보는 /var/adm/utmpx와 /var/adm/wtmpx 파일에 저장된다.
utmpx 구조체
utmpx와 wtmpx 파일은 구조가 동일하다.
이 두 파일을 읽으려면 utmpx 구조체를 사용한다.
utmpx 구조체는 <utmpx.h> 파일에 정의되어 있다.
struct utmpx {
char ut_user[32];
char ut_id[4];
char ut_line[32];
pid_t ut_pid;
short ut_type;
struct exit_status ut_exit;
struct timeval ut_tv;
int ut_session;
int pad[5];
short ut_syslen;
char ut_host[257];
};
/var/adm/utmpx 파일 순차적으로 읽기 : getutxent(3), setutxent(3), endutxent(3), utmpxname(3)
#include <utmpx.h>
struct utmpx *getutxent(void);
void setutxent(void);
void endutxent(void);
int utmpxname(const char *file);
// file : 교체할 파일명
'유닉스(Unix) > 시스템 프로그래밍' 카테고리의 다른 글
프로세스의 개념 (0) | 2021.08.17 |
---|---|
시간 관리 함수 (0) | 2021.08.17 |
시스템 관련 정보 검색과 설정 (0) | 2021.08.16 |
디렉토리 관련 함수 (0) | 2021.08.16 |
링크 파일 생성 (0) | 2021.08.16 |
Comments