[sisyphus] unreal ircd
Led
=?iso-8859-1?q?led_=CE=C1_ukr-fin=2Ecom=2Eua?=
Пт Май 27 18:49:01 MSD 2005
В сообщении от Пятница 27 Май 2005 17:19 Vitaly Smirnov написал(a):
> Ну хотя вообще-то не всё так страшно там ;)
>
> Есть кусок кода, за это отвечающий:
> >#if defined(IRC_UID) && defined(IRC_GID)
> > if ((int)getuid() == 0) {
> > if ((IRC_UID == 0) || (IRC_GID == 0)) {
> > (void)fprintf(stderr,
> > "ERROR: SETUID and SETGID have not been set
>
> properly"
>
> > "\nPlease read your
>
> documentation\n(HINT:SETUID or SETGID can not be 0)\n");
>
> > exit(-1);
> > } else {
> > /*
> > * run as a specified user
> > */
> >
> > (void)fprintf(stderr,
> > "WARNING: ircd invoked as root\n");
> > (void)fprintf(stderr, " changing to uid
>
> %d\n",
>
> > IRC_UID);
> > (void)fprintf(stderr, " changing to gid
>
> %d\n",
>
> > IRC_GID);
> > (void)setgid(IRC_GID); // Вот тут и надо
>
> получить gid из "uircd"
>
> > (void)setuid(IRC_UID); // тут uid ;)
> > }
> > }
> >#endif
>
> В качестве решения можно просто в хидерном файле вместо gid/uid
> прописать "uircd" а в коде доставать gid/uid по имени.
> Вот только вопрос, какой функцией достать gid/uid ?
Если я не ошибаюсь, то имеет смысл глянуть на
man getpwent
man getgrent
Led.
Подробная информация о списке рассылки Sisyphus