[sisyphus] unreal ircd
Vitaly Smirnov
=?iso-8859-1?q?devcore_=CE=C1_gmail=2Ecom?=
Пт Май 27 18:19:34 MSD 2005
Ну хотя вообще-то не всё так страшно там ;)
Есть кусок кода, за это отвечающий:
>#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 ?
--
С уважением, Виталий Смирнов.
Подробная информация о списке рассылки Sisyphus