#include <u.h> | |
#include <libc.h> | |
#include <bio.h> | |
#include <auth.h> | |
/* | |
* see if user is in the group noworld, i.e., has all file | |
* priviledges masked with 770, and all directories with | |
* 771, before checking access rights | |
*/ | |
int | |
noworld(char *user) | |
{ | |
Biobuf *b; | |
char *p; | |
int n; | |
b = Bopen("/adm/users", OREAD); | |
if(b == nil) | |
return 0; | |
while((p = Brdline(b, '\n')) != nil){ | |
p[Blinelen(b)-1] = 0; | |
p = strchr(p, ':'); | |
if(p == nil) | |
continue; | |
if(strncmp(p, ":noworld:", 9) == 0){ | |
p += 9; | |
break; | |
} | |
} | |
n = strlen(user); | |
while(p != nil && *p != 0){ | |
p = strstr(p, user); | |
if(p == nil) | |
break; | |
if(*(p-1) == ':' || *(p-1) == ',') | |
if(*(p+n) == ':' || *(p+n) == ',' || *(p+n) == 0){ | |
Bterm(b); | |
return 1; | |
} | |
p++; | |
} | |
Bterm(b); | |
return 0; | |
} |