!!!C ユーザ情報 [Programming 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 #include uid_t getuid(void); char *getlogin(void); *getuidはprogramに関連付けられているUIDを返す *getloginは、現在のuserのlogin名を返す #include #include #include #include int main() { uid_t uid = getuid(); char *login = getlogin(); printf("%d : %s\n" ,uid, login); exit(0); } !getpwduid、getpwnam *user情報を効率的に取得するための標準的なprogramming interfaceが用意されている。 #include #include 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 #include #include #include #include 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); } ---- この本からの覚書。 {{amazon 4797327014}}