我试图用linux系统调用编写一个c程序来更改用户密码。我试图使用/etc/passwd/etc/shadow文件,但由于密码已加密,我遇到了问题,您能帮我解决这个问题吗?
void main(int argc,char**argv){

uid_t uid;

struct passwd *pw;

uid = getuid();

if (argc > 1)
    pw = getpwnam(argv[1]);
else
    pw = getpwuid(uid);
//system("passwd");
//printf("%i",execl("/usr/bin/passwd","passwd",pw->pw_name)); //here I tried to use execl but it returns error

}
我用的是系统(“passwd”),但我认为我的老师不会接受。剩下的我只是想了解一下…东西,不重要。

最佳答案

您可以尝试使用putpwent进行此操作。正如jonathan leffler在评论中所说,如果要更新影子文件,需要putspent
但最简单也可能是最便携的方法是通过passwdsystem(3)调用popen(3)

关于c - 如何使用Linux系统调用在C语言中更改用户密码?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9978892/

10-13 08:45