--- tcb-0.9.8.7/progs/tcb_convert.c.orig 2003-10-30 13:06:59 +0300 +++ tcb-0.9.8.7/progs/tcb_convert.c 2003-11-06 20:44:27 +0300 @@ -31,11 +31,13 @@ static int tcb_auth_is_set(void) f = fopen(DEFS_FILE, "r"); if (!f) { + if ( ENOENT == errno ) + return 1; perror("open: " DEFS_FILE); return -1; } - retval = 0; + retval = 1; while (fgets(linebuf, sizeof(linebuf), f)) { if (!strchr(linebuf, '\n')) { fprintf(stderr, "Line too long in " DEFS_FILE "\n"); @@ -62,7 +64,7 @@ static int tcb_auth_is_set(void) while (q >= p && (*q == ' ' || *q == '\t')) *q-- = '\0'; if (!strcmp(p, "yes")) - retval = 1; + retval = 2; else if (!strcmp(p, "no")) retval = 0; else { @@ -186,7 +188,7 @@ static int copy_to_tcb(void) shadowgid = gr->gr_gid; switch (tcb_auth_is_set()) { - case 1: + case 2: gr = getgrnam("auth"); if (!gr) { fprintf(stderr, DEFS_TCB_AUTH_GROUP " is set but " @@ -198,6 +200,15 @@ static int copy_to_tcb(void) spwmode = 0640; break; + case 1: + gr = getgrnam("auth"); + if (gr) { + authgid = gr->gr_gid; + dirmode = 02710; + spwmode = 0640; + break; + } + case 0: authgid = shadowgid; dirmode = 02700;