Some new variables for the isdnlog
isdnlog starts programs noe with the file system rights bugfixes
This commit is contained in:
parent
7ec96fa805
commit
3605f3a6ff
|
@ -1,4 +1,4 @@
|
||||||
## $Id: Makefile.in,v 1.28 1997/05/25 19:40:43 luethje Exp $
|
## $Id: Makefile.in,v 1.29 1997/06/15 23:49:28 luethje Exp $
|
||||||
##
|
##
|
||||||
## ISDN accounting for isdn4linux.
|
## ISDN accounting for isdn4linux.
|
||||||
##
|
##
|
||||||
|
@ -19,6 +19,11 @@
|
||||||
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
##
|
##
|
||||||
## $Log: Makefile.in,v $
|
## $Log: Makefile.in,v $
|
||||||
|
## Revision 1.29 1997/06/15 23:49:28 luethje
|
||||||
|
## Some new variables for the isdnlog
|
||||||
|
## isdnlog starts programs noe with the file system rights
|
||||||
|
## bugfixes
|
||||||
|
##
|
||||||
## Revision 1.28 1997/05/25 19:40:43 luethje
|
## Revision 1.28 1997/05/25 19:40:43 luethje
|
||||||
## isdnlog: close all files and open again after kill -HUP
|
## isdnlog: close all files and open again after kill -HUP
|
||||||
## isdnrep: support vbox version 2.0
|
## isdnrep: support vbox version 2.0
|
||||||
|
@ -232,7 +237,7 @@ SERVICEFILE = /etc/services
|
||||||
# DON'T EDIT BELOW THIS LINE
|
# DON'T EDIT BELOW THIS LINE
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
VERSION = 2.99.21
|
VERSION = 2.99.23
|
||||||
|
|
||||||
ifeq ($(POSTGRES),1)
|
ifeq ($(POSTGRES),1)
|
||||||
DEFS += -DPOSTGRES
|
DEFS += -DPOSTGRES
|
||||||
|
|
|
@ -1364,7 +1364,20 @@ unterbunden ein Programm zu starten, wo ein Benutzer Leserechte besitzt
|
||||||
und dieses als root gestartet wird. Dieses koennte sich als trojanisches Pferd
|
und dieses als root gestartet wird. Dieses koennte sich als trojanisches Pferd
|
||||||
verwenden lassen. Daher muessen Programme, die nicht root gehoeren oder
|
verwenden lassen. Daher muessen Programme, die nicht root gehoeren oder
|
||||||
die jeder (others) beschreiben kann mit dem Eintrag USER belegt werden.
|
die jeder (others) beschreiben kann mit dem Eintrag USER belegt werden.
|
||||||
Der Eintrag hat folgende Syntax:
|
|
||||||
|
Wenn die folgenden Eintraege nicht vorhanden sind und diese Dateien nicht
|
||||||
|
dem User root gehoeren, dann setzt isdnlog die Rechte so, wie sie der
|
||||||
|
Datei mitgegeben sind auf dem Dateisystem. Beispiel:
|
||||||
|
|
||||||
|
luethje@bundy:bin$ ls -l
|
||||||
|
total 3
|
||||||
|
-rwxr-xr-x 1 luethje users 315 Mar 9 16:15 deloldmails*
|
||||||
|
|
||||||
|
Die Datei "deloldmails" wird mit den Rechten luethje.users gestartet, wenn die
|
||||||
|
folgenden Eintraege in der isdn.conf fehlen. Allerdings haben diese Eintraege
|
||||||
|
hoehere Prioritaet.
|
||||||
|
|
||||||
|
Der Eintrag in der isdn.conf hat folgende Syntax:
|
||||||
|
|
||||||
USER=fred
|
USER=fred
|
||||||
|
|
||||||
|
@ -1470,6 +1483,14 @@ Es gibt aber 10 zusaetzliche Variablen, die verwendet werden duerfen:
|
||||||
\$10 : Die Output-Bytes pro Sekunde
|
\$10 : Die Output-Bytes pro Sekunde
|
||||||
\$11 : Die Dienstekenung
|
\$11 : Die Dienstekenung
|
||||||
\$12 : Die Gebuehren
|
\$12 : Die Gebuehren
|
||||||
|
\$13 : Gibt als String die Landesvorwahl des Anrufenden an.
|
||||||
|
\$14 : Gibt als String die Landesvorwahl des Angerufenden an.
|
||||||
|
\$15 : Gibt als String die Vorwahl des Anrufenden an.
|
||||||
|
\$16 : Gibt als String die Vorwahl des Angerufenden an.
|
||||||
|
\$17 : Gibt als String den Ort des Anrufenden an.
|
||||||
|
\$18 : Gibt als String den Ort des Angerufenden an.
|
||||||
|
\$19 : Gibt als String den Alias des Anrufenden an.
|
||||||
|
\$20 : Gibt als String den Alias des Angerufenden an.
|
||||||
|
|
||||||
Folgende Punkte sind zu beachten:
|
Folgende Punkte sind zu beachten:
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: start_prog.c,v 1.8 1997/05/28 22:03:10 luethje Exp $
|
/* $Id: start_prog.c,v 1.9 1997/06/15 23:49:38 luethje Exp $
|
||||||
*
|
*
|
||||||
* ISDN accounting for isdn4linux.
|
* ISDN accounting for isdn4linux.
|
||||||
*
|
*
|
||||||
|
@ -20,6 +20,11 @@
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* $Log: start_prog.c,v $
|
* $Log: start_prog.c,v $
|
||||||
|
* Revision 1.9 1997/06/15 23:49:38 luethje
|
||||||
|
* Some new variables for the isdnlog
|
||||||
|
* isdnlog starts programs noe with the file system rights
|
||||||
|
* bugfixes
|
||||||
|
*
|
||||||
* Revision 1.8 1997/05/28 22:03:10 luethje
|
* Revision 1.8 1997/05/28 22:03:10 luethje
|
||||||
* some changes
|
* some changes
|
||||||
*
|
*
|
||||||
|
@ -87,8 +92,8 @@ static interval *RootIntervall = NULL;
|
||||||
static void KillCommand(int);
|
static void KillCommand(int);
|
||||||
static int GetArgs(char *, char *[], char *[], int);
|
static int GetArgs(char *, char *[], char *[], int);
|
||||||
static interval *Next_Interval(void);
|
static interval *Next_Interval(void);
|
||||||
static int set_user(char *User);
|
static int set_user(char *User, char *File);
|
||||||
static int set_group(char *Group);
|
static int set_group(char *Group, char *File);
|
||||||
static char *StrToArg(char* string);
|
static char *StrToArg(char* string);
|
||||||
static char *Replace_Opts(char *String, char *Opts[], int MaxOpts);
|
static char *Replace_Opts(char *String, char *Opts[], int MaxOpts);
|
||||||
static char *ArgToChar(int type, void* Ptr);
|
static char *ArgToChar(int type, void* Ptr);
|
||||||
|
@ -96,9 +101,10 @@ char **Get_Opts(int chan, int event, int InOut);
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
static int set_user(char *User)
|
static int set_user(char *User, char *File)
|
||||||
{
|
{
|
||||||
struct passwd* Ptr = NULL;
|
struct passwd* Ptr = NULL;
|
||||||
|
struct stat filestat;
|
||||||
|
|
||||||
if (User == NULL || User[0] == '\0')
|
if (User == NULL || User[0] == '\0')
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -107,7 +113,7 @@ static int set_user(char *User)
|
||||||
|
|
||||||
while ((Ptr = getpwent()) != NULL)
|
while ((Ptr = getpwent()) != NULL)
|
||||||
{
|
{
|
||||||
if (!strcmp(Ptr->pw_name,User))
|
if (!strcmp(Ptr->pw_name,User) || atoi(User) == (int) Ptr->pw_uid)
|
||||||
{
|
{
|
||||||
endpwent();
|
endpwent();
|
||||||
return setuid(Ptr->pw_uid);
|
return setuid(Ptr->pw_uid);
|
||||||
|
@ -115,14 +121,19 @@ static int set_user(char *User)
|
||||||
}
|
}
|
||||||
|
|
||||||
endpwent();
|
endpwent();
|
||||||
|
|
||||||
|
if (!stat(File,&filestat))
|
||||||
|
return setuid(filestat.st_uid);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
static int set_group(char *Group)
|
static int set_group(char *Group, char *File)
|
||||||
{
|
{
|
||||||
struct group* Ptr = NULL;
|
struct group* Ptr = NULL;
|
||||||
|
struct stat filestat;
|
||||||
|
|
||||||
|
|
||||||
if (Group == NULL || Group[0] == '\0')
|
if (Group == NULL || Group[0] == '\0')
|
||||||
|
@ -130,9 +141,10 @@ static int set_group(char *Group)
|
||||||
|
|
||||||
setgrent();
|
setgrent();
|
||||||
|
|
||||||
|
|
||||||
while ((Ptr = getgrent()) != NULL)
|
while ((Ptr = getgrent()) != NULL)
|
||||||
{
|
{
|
||||||
if (!strcmp(Ptr->gr_name,Group))
|
if (!strcmp(Ptr->gr_name,Group) || atoi(Group) == (int) Ptr->gr_gid)
|
||||||
{
|
{
|
||||||
endgrent();
|
endgrent();
|
||||||
return setgid(Ptr->gr_gid);
|
return setgid(Ptr->gr_gid);
|
||||||
|
@ -140,6 +152,10 @@ static int set_group(char *Group)
|
||||||
}
|
}
|
||||||
|
|
||||||
endgrent();
|
endgrent();
|
||||||
|
|
||||||
|
if (!stat(File,&filestat))
|
||||||
|
return setgid(filestat.st_gid);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,13 +204,13 @@ int Ring(info_args *Cmd, char *Opts[], int Die, int Async)
|
||||||
case -1: print_msg(PRT_ERR, "%s\n", "Can't start fork()!");
|
case -1: print_msg(PRT_ERR, "%s\n", "Can't start fork()!");
|
||||||
return 0;
|
return 0;
|
||||||
break;
|
break;
|
||||||
case 0: if (set_group(Cmd->group) < 0)
|
case 0: if (set_group(Cmd->group, Args[0]) < 0)
|
||||||
{
|
{
|
||||||
print_msg(PRT_ERR, "Can not set group %s: %s\n",Cmd->group,strerror(errno));
|
print_msg(PRT_ERR, "Can not set group %s: %s\n",Cmd->group,strerror(errno));
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (set_user(Cmd->user) < 0)
|
if (set_user(Cmd->user, Args[0]) < 0)
|
||||||
{
|
{
|
||||||
print_msg(PRT_ERR, "Can not set user %s: %s\n",Cmd->user,strerror(errno));
|
print_msg(PRT_ERR, "Can not set user %s: %s\n",Cmd->user,strerror(errno));
|
||||||
exit(-1);
|
exit(-1);
|
||||||
|
@ -952,7 +968,7 @@ static char *ArgToChar(int type, void* Ptr)
|
||||||
|
|
||||||
char **Get_Opts(int chan, int event, int InOut)
|
char **Get_Opts(int chan, int event, int InOut)
|
||||||
{
|
{
|
||||||
static char *Opts[13];
|
static char *Opts[21];
|
||||||
static char Strings[2][30];
|
static char Strings[2][30];
|
||||||
|
|
||||||
Opts[0] = (char*) Set_Ringer_Flags(event,InOut);
|
Opts[0] = (char*) Set_Ringer_Flags(event,InOut);
|
||||||
|
@ -1013,7 +1029,16 @@ char **Get_Opts(int chan, int event, int InOut)
|
||||||
else
|
else
|
||||||
Opts[11] = "";
|
Opts[11] = "";
|
||||||
|
|
||||||
Opts[12] = NULL;
|
Opts[12] = call[chan].areacode[CALLING];
|
||||||
|
Opts[13] = call[chan].areacode[CALLED];
|
||||||
|
Opts[14] = call[chan].vorwahl[CALLING];
|
||||||
|
Opts[15] = call[chan].vorwahl[CALLED];
|
||||||
|
Opts[16] = call[chan].area[CALLING];
|
||||||
|
Opts[17] = call[chan].area[CALLED];
|
||||||
|
Opts[18] = call[chan].alias[CALLING];
|
||||||
|
Opts[19] = call[chan].alias[CALLED];
|
||||||
|
|
||||||
|
Opts[20] = NULL;
|
||||||
|
|
||||||
return Opts;
|
return Opts;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: isdnrep.c,v 1.28 1997/05/28 21:23:03 luethje Exp $
|
/* $Id: isdnrep.c,v 1.29 1997/06/15 23:49:45 luethje Exp $
|
||||||
*
|
*
|
||||||
* ISDN accounting for isdn4linux. (Report-module)
|
* ISDN accounting for isdn4linux. (Report-module)
|
||||||
*
|
*
|
||||||
|
@ -20,6 +20,11 @@
|
||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*
|
*
|
||||||
* $Log: isdnrep.c,v $
|
* $Log: isdnrep.c,v $
|
||||||
|
* Revision 1.29 1997/06/15 23:49:45 luethje
|
||||||
|
* Some new variables for the isdnlog
|
||||||
|
* isdnlog starts programs noe with the file system rights
|
||||||
|
* bugfixes
|
||||||
|
*
|
||||||
* Revision 1.28 1997/05/28 21:23:03 luethje
|
* Revision 1.28 1997/05/28 21:23:03 luethje
|
||||||
* isdnlog option -b is working again ;-)
|
* isdnlog option -b is working again ;-)
|
||||||
* isdnlog has new \$x variables
|
* isdnlog has new \$x variables
|
||||||
|
@ -3053,6 +3058,14 @@ static char *create_vbox_file(char *file, int *compression)
|
||||||
}
|
}
|
||||||
|
|
||||||
close(fdout);
|
close(fdout);
|
||||||
|
|
||||||
|
if (len < 0)
|
||||||
|
{
|
||||||
|
print_msg(PRT_ERR,"Can not read from file `%s': %s!\n",file, strerror(errno));
|
||||||
|
close(fdin);
|
||||||
|
unlink(fileout);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
close(fdin);
|
close(fdin);
|
||||||
|
|
Loading…
Reference in New Issue