home *** CD-ROM | disk | FTP | other *** search
- /* setuid version 1.0, 4/20/90. */
-
- #include <stdio.h>
- #include <pwd.h>
-
- main(argc,argv)
- int argc;
- char *argv[];
- {
- struct passwd pwm;
- struct passwd *pw = &pwm;
-
- if (argc < 3)
- { fputs("Usage: setuid username program [ arg ... ]\n",stderr); exit(1); }
- if ((sscanf(argv[1],"%d",&pw->pw_uid) < 1) && (!(pw = getpwnam(argv[1]))))
- { fprintf(stderr,"setuid: fatal: user %s unknown\n",argv[1]); exit(2); }
- if (setuid(pw->pw_uid) == -1)
- { perror("setuid: fatal: cannot setuid"); exit(3); }
- execvp(argv[2],argv + 2);
- perror("setuid: fatal: cannot execute");
- exit(4);
- }
-