|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : lg@rgz.ru 2:5020/400 12 Jan 2001 18:04:49 To : All Subject : Re: root -------------------------------------------------------------------------------- Pavel Knyazev <Pavel.Knyazev@p1.f181.n5010.z2.fidonet.org> wrote: > Alexey, > Пятница Январь 12 2001 04:08, Alexey Bogdanov => All: > AB> Господа, а как часть пpав pyта пеpедать юзеpy(ам) из гpyппы wheel? > AB> Пpо su я в кypсе, но постоянно вводить длииинный паpоль pовно для > AB> того, чтобы потом сказать halt yже надоело. вот тут накатал прогу может поможет ----------begin---------- #include <stdio.h> #include <pwd.h> #include <errno.h> #include <stdlib.h> int gouser(struct passwd *user) { pid_t spid; int pstat; char *sh; sh = getenv("SHELL"); if (sh==NULL) { fprintf(stderr, "no shell available\nset SHELL var\n"); return 0; } switch(spid = fork()) { case -1: break; case 0: setgid(user->pw_gid); setuid(user->pw_uid); execl(sh, sh, (char *) NULL); default: do { spid = wait(&pstat); } while ( spid == -1 && errno == EINTR); break; } } int main(int argc, char* argv[]) { struct passwd *pwd, *pwdu; uid_t uid; uid = getuid(); pwdu = getpwuid(uid); if (argc == 2) { if (uid == 0 ) { fprintf(stderr, "you dont need to go :)\n"); return 1; } if ((pwdu->pw_gid == 0) && ((pwd = getpwnam(argv[1]))!=NULL)) { gouser(pwd); return 0; } else { fprintf(stderr, "%s: user %s not found\n", argv[0], argv[1]); return 1; } } } --------------------end------------------- компиляешь ее и # chown root <progname> # chmod u+s <progname> usage: <progname> <username> и теперь все кто в группе wheel могут становиться любым юзером f.e. [16:59][lg@rgz:p0][~]$ id uid=1002(lg) gid=0(wheel) groups=0(wheel) [17:02][lg@rgz:p0][~]$ ./gon root God made the Idiot for practice, and then He made the School Board -- Mark Twain [17:03][root@rgz:p0][~]#id uid=0(root) gid=0(wheel) groups=0(wheel) [17:03][root@rgz:p0][~]# [17:03][lg@rgz:p0][~]$ ./gon nobody Old programmers never die. They just branch to a new address. [17:03][nobody@rgz:p0][~]$ id uid=65534(nobody) gid=65534(nobody) groups=65534(nobody), 0(wheel) [17:03][nobody@rgz:p0][~]$ ./gon root ./gon: user root not found [17:03][nobody@rgz:p0][~]$ -- zev --- ifmail v.2.15dev5 * Origin: Gamma NNTP server Moscow Russia (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/9136437e06dd.html, оценка из 5, голосов 10
|