From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Led To: device@altlinux.org, ALT Linux Sisyphus discussion list Subject: Re: [sisyphus] unreal ircd Date: Fri, 27 May 2005 17:49:01 +0300 User-Agent: KMail/1.8 References: <42972C76.5010407@gmail.com> In-Reply-To: <42972C76.5010407@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="koi8-r" Content-Transfer-Encoding: 8bit Content-Disposition: inline Message-Id: <200505271749.01776.led@ukr-fin.com.ua> Cc: X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.5 Precedence: list Reply-To: led@ukr-fin.com.ua, ALT Linux Sisyphus discussion list List-Id: ALT Linux Sisyphus discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 27 May 2005 14:49:08 -0000 Archived-At: List-Archive: В сообщении от Пятница 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.