[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