C ユーザ情報
ナビゲーションに移動
検索に移動
C ユーザ情報
- すべてのLinux programは、initを除いて、他のprogramまたはuserから実行される。
- 内部的にはuserは、一意のuser ID UID を持っている。
- programに、setUID permision を set すればあたかも別の user が起動したかの様にprogramを起動できる。
- UIDには、uid_t という独自の型があり、sys/types.hで定義されている。
getuid、getloin
#include <sys/types.h> #include <unistd.h> uid_t getuid(void); char *getlogin(void);
- getuidはprogramに関連付けられているUIDを返す
- getloginは、現在のuserのlogin名を返す
#include <sys/types.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> int main() { uid_t uid = getuid(); char *login = getlogin(); printf("%d : %s\n" ,uid, login); exit(0); }
getpwduid、getpwnam
- user情報を効率的に取得するための標準的なprogramming interfaceが用意されている。
#include <sys/types.h> #include <pwd.h> struct passwd *getpwduid(uid_t uid); struct passwd *getpwnam(const char *name);
member | 説明 |
---|---|
char *pw_name | userのlogin名 |
uid_t pw_uid | UID |
gid_t pw_gid | GID |
char *pw_dir | user の home directory |
char *pw_shell | user の default shell |
#include <sys/types.h> #include <pwd.h> #include <unistd.h>#include <stdio.h> #include <stdlib.h> int main() { uid_t uid = getuid(); struct passwd *pw; pw = getpwuid(uid); printf("%s %d %d %s %s\n", pw->pw_name, pw->pw_uid, pw->pw_gid, pw->pw_dir, pw->pw_shell); exit(0); }
この本からの覚書。
© 2006 矢木浩人