cwfs: make noauth a storable config option so one can boot without factotum and nvram

This commit is contained in:
cinap_lenrek 2011-04-17 09:29:38 +00:00
parent edca9072a5
commit 95758309f3
7 changed files with 31 additions and 42 deletions

View file

@ -264,14 +264,8 @@ f_attach(Chan *cp, Fcall *in, Fcall *ou)
strncpy(cp->whoname, in->uname, sizeof(cp->whoname));
cp->whotime = time(nil);
if(cons.flags & attachflag)
print("9p1: attach %s %T to \"%s\" C%d\n",
cp->whoname, cp->whotime, fs->name, cp->chan);
out:
if((cons.flags & attachflag) && ou->err)
print("9p1: attach %s %T SUCK EGGS --- %s\n",
in->uname, time(nil), errstr9p[ou->err]);
if(p)
putbuf(p);
if(f) {

View file

@ -165,7 +165,7 @@ auth(Chan* chan, Fcall* f, Fcall* r)
Filsys *fs;
int error;
if(cons.flags & authdisableflag)
if(noauth || wstatallow)
return Eauthdisabled;
error = 0;
@ -202,9 +202,6 @@ auth(Chan* chan, Fcall* f, Fcall* r)
}
r->aqid = file->qid;
out:
if((cons.flags & attachflag) && error)
print("9p2: auth %s %T SUCK EGGS --- %s\n",
f->uname, time(nil), errstr9p[error]);
if(file != nil){
qunlock(file);
if(error)
@ -229,10 +226,10 @@ authorize(Chan* chan, Fcall* f)
return uid;
}
if(cons.flags & authdisableflag){
if(noauth || wstatallow){
uid = strtouid(f->uname);
if(db)
print("permission granted by authdisable uid %s = %d\n",
print("permission granted by noauth uid %s = %d\n",
f->uname, uid);
return uid;
}
@ -326,14 +323,7 @@ attach(Chan* chan, Fcall* f, Fcall* r)
strncpy(chan->whoname, f->uname, sizeof(chan->whoname));
chan->whotime = time(nil);
if(cons.flags & attachflag)
print("9p2: attach %s %T to \"%s\" C%d\n",
chan->whoname, chan->whotime, fs->name, chan->chan);
out:
if((cons.flags & attachflag) && error)
print("9p2: attach %s %T SUCK EGGS --- %s\n",
f->uname, time(nil), errstr9p[error]);
if(p != nil)
putbuf(p);
if(file != nil){

View file

@ -81,16 +81,14 @@ struct Fspar {
ulong roflag;
ulong errorflag;
ulong chatflag;
ulong attachflag;
ulong authdebugflag;
ulong authdisableflag;
int noattach;
int noattach; /* attach is disabled */
int noauth; /* auth is disable */
int wstatallow; /* set to circumvent wstat permissions */
int writeallow; /* set to circumvent write permissions */
int duallow; /* single user to allow du */
int readonly; /* disable writes if true */
int noauth; /* Debug */
int rawreadok; /* allow reading raw data */

View file

@ -695,6 +695,14 @@ cmd_time(int argc, char *argv[])
print("time = %ld ms\n", TK2MS(t2-t1));
}
void
cmd_noauth(int, char *[])
{
noauth = !noauth;
if(noauth)
print("authentication is DISABLED\n");
}
void
cmd_noattach(int, char *[])
{
@ -759,15 +767,14 @@ installcmds(void)
cmd_install("who", "[user ...] -- print attaches", cmd_who);
cmd_install("hangup", "chan -- clunk files", cmd_hangup);
cmd_install("printconf", "-- print configuration", cmd_printconf);
cmd_install("noauth", "toggle noauth flag", cmd_noauth);
cmd_install("noattach", "toggle noattach flag", cmd_noattach);
cmd_install("files", "report on files structure", cmd_files);
attachflag = flag_install("attach", "-- attach calls");
chatflag = flag_install("chat", "-- verbose");
errorflag = flag_install("error", "-- on errors");
whoflag = flag_install("allchans", "-- on who");
authdebugflag = flag_install("authdebug", "-- report authentications");
authdisableflag = flag_install("authdisable", "-- disable authentication");
}
int

View file

@ -440,6 +440,10 @@ mergeconf(Iobuf *p)
cp = getwrd(word, cp);
if(service[0] == 0)
strncpy(service, word, sizeof service);
} else if(strcmp(word, "noauth") == 0){
noauth = 1;
} else if(strcmp(word, "readonly") == 0){
readonly = 1;
} else if(strcmp(word, "ipauth") == 0) /* obsolete */
cp = getwrd(word, cp);
else if(astrcmp(word, "ip") == 0) /* obsolete */
@ -579,7 +583,10 @@ start:
if(fs->conf && fs->conf[0] != '\0')
cp = seprint(cp, ep, "filsys %s %s\n", fs->name,
fs->conf);
if(noauth)
cp = seprint(cp, ep, "noauth\n");
if(readonly)
cp = seprint(cp, ep, "readonly\n");
for (fsp = fspar; fsp->name != nil; fsp++)
cp = seprint(cp, ep, "%s %ld\n",
fsp->name, fsp->declared);
@ -591,7 +598,7 @@ start:
}
putbuf(p);
print("service %s\n", service);
print("service %s\n", service);
loop:
/*
@ -954,12 +961,6 @@ arginit(void)
querychanger(iconfig(word));
continue;
}
if(strcmp(word, "allow") == 0) {
wstatallow = 1;
writeallow = 1;
continue;
}
if(strcmp(word, "copyworm") == 0) {
copyworm = 1;
continue;
@ -976,16 +977,18 @@ arginit(void)
copydev = 1;
continue;
}
if(strcmp(word, "noauth") == 0) {
noauth = !noauth;
continue;
}
if(strcmp(word, "noattach") == 0) {
noattach = !noattach;
continue;
}
if(strcmp(word, "noauth") == 0) {
noauth = !noauth;
f.modconf = 1;
continue;
}
if(strcmp(word, "readonly") == 0) {
readonly = 1;
readonly = !readonly;
f.modconf = 1;
continue;
}

View file

@ -1,5 +1,4 @@
#include "all.h"
#include "9p1.h"
void

View file

@ -44,9 +44,7 @@ struct Network {
static Network netif[Maxnets];
char *annstrs[Maxnets] = {
"tcp!*!9fs",
};
char *annstrs[Maxnets];
static void
neti(void *v)