mirror of
https://github.com/osmarks/ngircd.git
synced 2025-01-05 13:20:29 +00:00
If ServerUID is defined change the working directory to the home directory
of this user.
This commit is contained in:
parent
e07cc4bb63
commit
8ca1e4d548
@ -12,6 +12,11 @@
|
||||
|
||||
ngIRCd CVSHEAD
|
||||
|
||||
- When the daemon should switch to another user ID (ServerID is defined in
|
||||
the configuration file) and is not running in a chroot environment, it
|
||||
changes it's working directory to the home directory of this user. This
|
||||
should enable the system to write proper core files when not running with
|
||||
root privileges ...
|
||||
- Enhanced the "test suite": please have a look at src/testsuite/README!
|
||||
|
||||
ngIRCd 0.8.0 (2004-06-26)
|
||||
@ -534,4 +539,4 @@ ngIRCd 0.0.1, 31.12.2001
|
||||
|
||||
|
||||
--
|
||||
$Id: ChangeLog,v 1.239 2004/09/04 19:39:24 alex Exp $
|
||||
$Id: ChangeLog,v 1.240 2004/09/04 20:28:51 alex Exp $
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: ngircd.c,v 1.85 2004/05/11 00:01:11 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: ngircd.c,v 1.86 2004/09/04 20:28:51 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@ -285,6 +285,25 @@ main( int argc, const char *argv[] )
|
||||
chdir( "/" );
|
||||
}
|
||||
|
||||
/* Show user, group, and PID of the running daemon */
|
||||
pwd = getpwuid( getuid( )); grp = getgrgid( getgid( ));
|
||||
Log( LOG_INFO, "Running as user %s(%ld), group %s(%ld), with PID %ld.", pwd ? pwd->pw_name : "unknown", (LONG)getuid( ), grp ? grp->gr_name : "unknown", (LONG)getgid( ), (LONG)getpid( ));
|
||||
|
||||
/* Change working directory to home directory of the user
|
||||
* we are running as (when not running chroot()'ed!) */
|
||||
if( Conf_UID != 0 && ! Conf_Chroot[0] )
|
||||
{
|
||||
struct passwd *pwd;
|
||||
|
||||
pwd = getpwuid( Conf_UID );
|
||||
if( pwd != NULL )
|
||||
{
|
||||
if( chdir( pwd->pw_dir ) == 0 ) Log( LOG_DEBUG, "Changed working directory to \"%s\" ...", pwd->pw_dir );
|
||||
else Log( LOG_ERR, "Can't change working directory to \"%s\": %s", pwd->pw_dir, strerror( errno ));
|
||||
}
|
||||
else Log( LOG_ERR, "Can't get user informaton for UID %d!?", Conf_UID );
|
||||
}
|
||||
|
||||
/* Initialize modules, part II: these functions are eventually
|
||||
* called with already dropped privileges ... */
|
||||
Resolve_Init( );
|
||||
@ -296,10 +315,6 @@ main( int argc, const char *argv[] )
|
||||
#endif
|
||||
Conn_Init( );
|
||||
|
||||
/* Show user, group, and PID of the running daemon */
|
||||
pwd = getpwuid( getuid( )); grp = getgrgid( getgid( ));
|
||||
Log( LOG_INFO, "Running as user %s(%ld), group %s(%ld), with PID %ld.", pwd ? pwd->pw_name : "unknown", (LONG)getuid( ), grp ? grp->gr_name : "unknown", (LONG)getgid( ), (LONG)getpid( ));
|
||||
|
||||
/* Redirect stderr handle to "error file" for debugging.
|
||||
* But don't try to write in the chroot jail, since it's more
|
||||
* secure to have a chroot dir not writable by the daemon.
|
||||
|
Loading…
Reference in New Issue
Block a user