![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| High Level Programming Post questions about C, C++, Java, SQL, and other programming languages here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Clarification on /etc/passwd file entry | quintet | UNIX for Dummies Questions & Answers | 2 | 09-28-2007 05:11 AM |
| I want to read username and lastupdate only from /etc/security/passwd and write the s | me_haroon | AIX | 0 | 07-01-2006 01:16 AM |
| Failed Write of utmpx entry | jwideman | SCO | 1 | 02-04-2005 01:37 PM |
| Creating an entry for /etc/passwd | sleepster | Shell Programming and Scripting | 8 | 09-12-2003 08:05 PM |
| shutting down 5.7 on Intel: failed to write of utmpx entry | DarkLord | UNIX for Advanced & Expert Users | 2 | 12-05-2002 09:22 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Display Modes |
|
|||
|
Whant to write an entry in /etc/passwd (putpwent)
Hi i try to use the function putpwent to write a simple
entry in "/etc/passwd" putpwnet returns 0 as it works but notething writes to /etc/passwd. What have i missed? My os -------- root@nighter-laptop:/home/nighter/labb# uname -a Linux nighter-laptop 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux ( Ubuntu ) My code ---- #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> #include <pwd.h> #include <grp.h> #include <string.h> int main() { struct passwd p; long m=900; FILE *fd; memset(&p,0x00,sizeof(p)); fd=fopen("/etc/passwd ","a"); p.pw_name="kalle"; p.pw_passwd="kalle"; p.pw_uid=m; p.pw_gid=m; p.pw_gecos="Test account"; p.pw_dir="/home/kalle"; p.pw_shell="/bin/bash"; int value = putpwent(&p,fd); printf("%i",value); return 0; } ------------------------ |
| Forum Sponsor | ||
|
|
|
|||
|
/etc/shadow update password entry (putspent?)
Hi i just whant to update an password entry in /etc/shadow.
But dosen't get it to work. Something is wrong! in this code. What i try do do is if user kalle exist in shadow. I whant it to update it's password for just that entry. #include <stdio.h> #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> #include <pwd.h> #include <grp.h> #include <string.h> #include <shadow.h> //#include <userpw.h> int main() { // -------------------------- // // ------- passwd file ------ // // -------------------------- // FILE* fp; struct passwd *p; memset(&p, 0, sizeof(p)); if (!(fp = fopen("/etc/passwd", "a"))) { perror("Problem "); return(1); } // --------------------------- // // ----- Password Crypt ------ // // --------------------------- // char salt[2]; char password[8] = "password"; char t[11]; salt[0] = 'W'; salt[1] = 'M'; strcpy(t,(char *)crypt(password, salt)); // --------------------------- // // ------ shadow file -------- // // --------------------------- // FILE* fps; struct spwd *sp; memset(&sp, 0, sizeof(sp)); if (!(fps = fopen("/etc/shadow", "rw"))) { perror("Problem"); return(1); } char user[20] = "kalle"; /* Loop thru passwd file */ while ((p = getpwent()) != NULL) { printf("%s\n",p->pw_name); //IF user found if (strcmp(p->pw_name, user) == 0 ) { if(!(sp=getspnam(p->pw_name))){ printf("user missing in shadow file"); } else { strcpy(sp->sp_pwdp,t); prinf("run the train %s\n",sp->sp_pwdp); putspent(sp,fps); } } } fclose(fps); return( EXIT_SUCCESS ); } |