一、struct passwd
#include <sys/types.h>
#include <pwd.h>
struct passwd
{
char *pw_name; /* 用户登录名 */
char *pw_passwd; /* 密码(加密后) */
__uid_t pw_uid; /* 用户ID */
__gid_t pw_gid; /* 组ID */
char *pw_gecos; /* 详细用户名 */
char *pw_dir; /* 用户目录 */
char *pw_shell; /* Shell程序名 */
};
要取得某个使用者的信息时,有以下几个常用函数:
-
struct passwd * getpwuid(uid_t uid);
知道用户uid(user id),用getpwuid获取用户相关信息。
此函数可用来获取用户名。
用法:char* fileUser = getpwuid(st.st_uid)->pw_name; -
struct passwd * getpwnam(char * name);
知道用户名,用getpwnam获取用户的相关信息。 -
int getpw(uid_t uid, char *buf);
从/etc/passwd中查找符合参数uid所指定的用户账号数据, buf用于存放返回的用户信息。buf 字符串格式如下:
账号:密码:用户识别码(uid):组识别码(gid):全名:根目录:shell
返回值:返回 0 表示成功, 有错误发生时返回-1.
范例
#include <pwd.h>
#include <sys/types.h>
main()
{
char buffer[80];
getpw(0, buffer);
printf("%s\n", buffer);
}
执行:
root:123:0:0:root:/root:/bin/bash
-
struct passwd * pwdread(FILE * stream,struct passwd *p);
读取一个用户信息进来,填入p。返回p为成功,NULL为失败。 -
struct passwd * pwdalloc(void);
给passwd分配一块内存。
二、struct group
#include <sys/types.h>
#include <grp.h>
struct group
{
char *gr_name; /* 组名 */
char *gr_passwd; /* 密码 */
__gid_t gr_gid; /* 组ID */
char **gr_mem; /* 组成员名单 */
}
struct group * getgrgid(gid_t gid);
知道用户组gid(group id),用getgrgid获取用户组的相关信息。
用法:char * fileGrp = getgrgid(st.st_gid)->gr_name;
注意:文中的st为struct stat结构体,详见上一篇博文。