Set mISDNcapi egid to MISDN_GROUP

To allow access to the filesystem socket the effective group is changed
to the MISDN_GROUP, which is uucp or dialout usually.

Signed-off-by: Karsten Keil <kkeil@linux-pingi.de>
This commit is contained in:
Karsten Keil 2012-03-21 15:19:45 +01:00
parent db4bc04f95
commit d010a8996c
3 changed files with 18 additions and 2 deletions

View File

@ -14,7 +14,7 @@ else
_USE_SOFTFAX =
endif
AM_CPPFLAGS = -I$(top_srcdir)/include -Werror -Wall $(_USE_SOFTFAX) $(_MEMLEAKDEBUG)
AM_CPPFLAGS = -I$(top_srcdir)/include -Werror -Wall $(_USE_SOFTFAX) $(_MEMLEAKDEBUG) -DMISDN_GROUP=\"$(MISDN_GROUP)\"
EXTRA_DIST = capi20.conf.sample

View File

@ -204,7 +204,7 @@ mISDNcapid_SOURCES = daemon.c application.c lplci.c mplci.c ncci.c m_capi.h m_ca
mISDNcapid_LDADD = ../lib/libmisdn.la -lcapi20
mISDNcapid_LDFLAGS = -shared
AM_CPPFLAGS = -I$(top_srcdir)/include -Werror -Wall $(_USE_SOFTFAX) $(_MEMLEAKDEBUG)
AM_CPPFLAGS = -I$(top_srcdir)/include -Werror -Wall $(_USE_SOFTFAX) $(_MEMLEAKDEBUG) -DMISDN_GROUP=\"$(MISDN_GROUP)\"
EXTRA_DIST = capi20.conf.sample
CLEANFILES = *~
MISDN_SOCKET_DIR = /var/run/mISDNcapid

View File

@ -23,6 +23,8 @@
#include <string.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <grp.h>
#include "m_capi.h"
#include "mc_buffer.h"
#include "m_capi_sock.h"
@ -1478,6 +1480,7 @@ int main(int argc, char *argv[])
int ret, i, j, nb, c, exitcode = 1, ver, libdebug;
struct sockaddr_un mcaddr;
struct pController *pc;
struct group *grp;
KeepTemporaryFiles = 0;
config_file = def_config;
@ -1501,6 +1504,19 @@ int main(int argc, char *argv[])
mISDN_set_debug_level(libdebug);
iprint("Init mISDN lib version %x, debug = %x (%x)\n", ver, debugmask, libdebug);
grp = getgrnam(MISDN_GROUP);
if (!grp) {
fprintf(stderr, "Cannot get %s group ID - %s\n", MISDN_GROUP, strerror(errno));
return 1;
} else {
if (setegid(grp->gr_gid) < 0) {
fprintf(stderr, "Cannot set effective group to %s gid:%d - %s\n",
MISDN_GROUP, (int)grp->gr_gid, strerror(errno));
return 1;
}
iprint("Did set eGID to %s gid:%d\n", MISDN_GROUP, (int)grp->gr_gid);
}
mc_buffer_init();
snprintf(_TempDirectory, 80, "%s/mISDNd_XXXXXX", MISDND_TEMP_DIR);