我从IBM AIX上的一个应用程序获得了源文件,我正在尝试在Linux上构建它们。但是,Linux上不存在AIX上名为usersec.h
和userpw.h
的头文件。因此,在Linux上,这些功能会导致编译器错误:
在usersec.h
中声明
int getuserattr (char *, char *, void *, int);
有关getuserattr
的更多信息是here
在userpw.h
中声明
struct userpw
{
char *upw_passwd; /* user's passwd */
unsigned int upw_flags; /* flags of restrictions */
time_t upw_lastupdate; /* date of last passwd update */
char upw_name[PW_NAMELEN]; /* user's name */
};
struct userpw *getuserpw ();
int setpwdb ();
int endpwdb ();
请查找更多信息:getuserpw,setpwdb and endpwdb
如果有人知道如何在Linux上编写等效功能,那将是非常棒的事情。
答案 0 :(得分:1)
您可能想使用getpwent
及其相关功能。
getpwent()
函数返回指向包含以下内容的结构的指针 密码数据库中记录的细分字段(例如, 本地密码文件/etc/passwd
,NIS和LDAP)。第一次getpwent()
被调用,它返回第一项;之后,它 返回连续的条目。
setpwent()
函数倒退到密码的开头 数据库。
endpwent()
函数用于在关闭后关闭密码数据库 所有处理都已执行。
如果要获取特定用户的密码条目,可以使用getpwnam
或其变体之一。
getpwnam()
函数返回指向包含以下内容的结构的指针 密码数据库中记录的细分字段(例如, 与本地密码文件/etc/passwd
,NIS和LDAP匹配的本地密码文件 用户名名称。