1*7dd7cddfSDavid du Colombier #include <u.h>
2*7dd7cddfSDavid du Colombier #include <libc.h>
3*7dd7cddfSDavid du Colombier #include <bio.h>
4*7dd7cddfSDavid du Colombier #include <auth.h>
5*7dd7cddfSDavid du Colombier
6*7dd7cddfSDavid du Colombier /*
7*7dd7cddfSDavid du Colombier * see if user is in the group noworld, i.e., has all file
8*7dd7cddfSDavid du Colombier * priviledges masked with 770, and all directories with
9*7dd7cddfSDavid du Colombier * 771, before checking access rights
10*7dd7cddfSDavid du Colombier */
11*7dd7cddfSDavid du Colombier int
noworld(char * user)12*7dd7cddfSDavid du Colombier noworld(char *user)
13*7dd7cddfSDavid du Colombier {
14*7dd7cddfSDavid du Colombier Biobuf *b;
15*7dd7cddfSDavid du Colombier char *p;
16*7dd7cddfSDavid du Colombier int n;
17*7dd7cddfSDavid du Colombier
18*7dd7cddfSDavid du Colombier b = Bopen("/adm/users", OREAD);
19*7dd7cddfSDavid du Colombier if(b == nil)
20*7dd7cddfSDavid du Colombier return 0;
21*7dd7cddfSDavid du Colombier while((p = Brdline(b, '\n')) != nil){
22*7dd7cddfSDavid du Colombier p[Blinelen(b)-1] = 0;
23*7dd7cddfSDavid du Colombier p = strchr(p, ':');
24*7dd7cddfSDavid du Colombier if(p == nil)
25*7dd7cddfSDavid du Colombier continue;
26*7dd7cddfSDavid du Colombier if(strncmp(p, ":noworld:", 9) == 0){
27*7dd7cddfSDavid du Colombier p += 9;
28*7dd7cddfSDavid du Colombier break;
29*7dd7cddfSDavid du Colombier }
30*7dd7cddfSDavid du Colombier }
31*7dd7cddfSDavid du Colombier n = strlen(user);
32*7dd7cddfSDavid du Colombier while(p != nil && *p != 0){
33*7dd7cddfSDavid du Colombier p = strstr(p, user);
34*7dd7cddfSDavid du Colombier if(p == nil)
35*7dd7cddfSDavid du Colombier break;
36*7dd7cddfSDavid du Colombier if(*(p-1) == ':' || *(p-1) == ',')
37*7dd7cddfSDavid du Colombier if(*(p+n) == ':' || *(p+n) == ',' || *(p+n) == 0){
38*7dd7cddfSDavid du Colombier Bterm(b);
39*7dd7cddfSDavid du Colombier return 1;
40*7dd7cddfSDavid du Colombier }
41*7dd7cddfSDavid du Colombier p++;
42*7dd7cddfSDavid du Colombier }
43*7dd7cddfSDavid du Colombier Bterm(b);
44*7dd7cddfSDavid du Colombier return 0;
45*7dd7cddfSDavid du Colombier }
46