トップ 一覧 ping 検索 ヘルプ RSS ログイン

C ユーザ情報の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!!!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
!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
!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);
 }
----
この本からの覚書。
{{amazon 4797327014}}