History

add -g (for custom group file) and -R (to mount as root) options

Sigrid Solveig Haflínudóttir committed 6 years ago

Commit 75bb5101 parent 3669b3e3 files · +30 −7Browse files

Unified · Split

3 files
  1. common.h +2 −0
  2. ext4srv.c +23 −4
  3. part.c +5 −3
common.h+2−0
@@ -7,8 +7,10 @@ typedef struct Part Part; · 6 unmodified lines
77 #pragma varargck type "M" Part*
88
99 struct Opts {
10+ char *group;
1011 int cachewb;
1112 int linkmode;
13+ int asroot;
1214 };
1315
1416 struct Part {
ext4srv.c+23−4
@@ -150,8 +150,8 @@ rattach(Req *r) · 149 unmodified lines
150150 rerrstr(err, sizeof(err));
151151 respond(r, err);
152152 }else{
153− if(findgroup(&a->p->groups, r->ifcall.uname, &a->uid) == nil)
154− a->uid = Root; /* FIXME need external mapping */
153+ if(opts.asroot || findgroup(&a->p->groups, r->ifcall.uname, &a->uid) == nil)
154+ a->uid = Root;
155155
156156 incref(a->p);
157157 a->type = Adir;
@@ -634,7 +634,7 @@ static Srv fs = { · 476 unmodified lines
634634 static void
635635 usage(void)
636636 {
637− fprint(2, "usage: %s [-C] [-l hide] [-s srvname]\n", argv0);
637+ fprint(2, "usage: %s [-C] [-R] [-g GROUPFILE] [-l hide] [-s SRVNAME]\n", argv0);
638638 threadexitsall("usage");
639639 }
640640
@@ -651,7 +651,9 @@ linkmode(char *m) · 10 unmodified lines
651651 void
652652 threadmain(int argc, char **argv)
653653 {
654− char *srv;
654+ char *srv, *gr;
655+ vlong sz;
656+ int f;
655657
656658 srv = "ext4";
657659 ARGBEGIN{
@@ -667,6 +669,23 @@ threadmain(int argc, char **argv) · 9 unmodified lines
667669 case 's':
668670 srv = EARGF(usage());
669671 break;
672+ case 'g':
673+ gr = EARGF(usage());
674+ if((f = open(gr, OREAD)) < 0)
675+ sysfatal("%r");
676+ if((sz = seek(f, 0, 2)) < 0)
677+ sysfatal("%s: invalid group file", gr);
678+ if((opts.group = malloc(sz+1)) == nil)
679+ sysfatal("memory");
680+ seek(f, 0, 0);
681+ if(readn(f, opts.group, sz) != sz)
682+ sysfatal("%s: read failed", gr);
683+ close(f);
684+ opts.group[sz] = 0;
685+ break;
686+ case 'R':
687+ opts.asroot = 1;
688+ break;
670689 }ARGEND
671690
672691 if(argc != 0)
part.c+5−3
@@ -257,13 +257,15 @@ mountpart(Part *p, Opts *opts) · 256 unmodified lines
257257 goto error;
258258 }
259259
260− if((gr = readfile(p, "/etc/group", &sz)) != nil){
260+ if(opts->group != nil){
261+ r = loadgroups(&p->groups, opts->group);
262+ }else if((gr = readfile(p, "/etc/group", &sz)) != nil){
261263 gr[sz] = 0;
262264 r = loadgroups(&p->groups, gr);
263265 free(gr);
264− if(r != 0)
265− goto error;
266266 }
267+ if(r != 0)
268+ goto error;
267269
268270 return 0;
269271 error:

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t