ref: d54980f5320e55083b74a03f87f5f9fd4251319e
parent: 0f454ebef3cf6a6dca264d2696982c48f1d6eec3
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Fri Dec 7 01:30:26 EST 2012
cwfs: make none attach work allow attach as none. (this was supposed to work but it doesnt for 9p2000 because we have to check for afid being NOFID instead of checking the uname string). and add "nonone" flag to disable this.
--- a/sys/src/cmd/cwfs/9p1.c
+++ b/sys/src/cmd/cwfs/9p1.c
@@ -82,7 +82,7 @@
return 1;
if(strcmp(in->uname, "none") == 0)
- return 1;
+ return !nonone;
if(in->type == Toattach)
return 0;
--- a/sys/src/cmd/cwfs/9p2.c
+++ b/sys/src/cmd/cwfs/9p2.c
@@ -201,20 +201,20 @@
db = cons.flags & authdebugflag;
- if(strcmp(f->uname, "none") == 0){+ if(noauth || wstatallow){uid = strtouid(f->uname);
if(db)
- fprint(2, "permission granted to none: uid %s = %d\n",
+ fprint(2, "permission granted by noauth uid %s = %d\n",
f->uname, uid);
return uid;
}
- if(noauth || wstatallow){+ if(f->afid == NOFID && !nonone){uid = strtouid(f->uname);
if(db)
- fprint(2, "permission granted by noauth uid %s = %d\n",
+ fprint(2, "permission granted to none: uid %s = %d\n",
f->uname, uid);
- return uid;
+ return 0; /* none */
}
af = filep(chan, f->afid, 0);
--- a/sys/src/cmd/cwfs/all.h
+++ b/sys/src/cmd/cwfs/all.h
@@ -84,6 +84,7 @@
ulong authdebugflag;
int noattach; /* attach is disabled */
int noauth; /* auth is disable */
+int nonone; /* attach as none disabled */
int noatime; /* atime is disabled */
int noatimeset; /* noatime was changed (reset after dump) */
int wstatallow; /* set to circumvent wstat permissions */
--- a/sys/src/cmd/cwfs/con.c
+++ b/sys/src/cmd/cwfs/con.c
@@ -694,6 +694,13 @@
}
void
+cmd_nonone(int, char *[])
+{+ nonone = !nonone;
+ print("none %s\n", nonone ? "disabled" : "enabled");+}
+
+void
cmd_noattach(int, char *[])
{noattach = !noattach;
@@ -767,6 +774,7 @@
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("nonone", "toggle nonone flag", cmd_nonone); cmd_install("noattach", "toggle noattach flag", cmd_noattach); cmd_install("files", "report on files structure", cmd_files);--- a/sys/src/cmd/cwfs/config.c
+++ b/sys/src/cmd/cwfs/config.c
@@ -21,6 +21,7 @@
static int copyworm = 0, copydev = 0;
static char *src, *dest;
+static int nononeset;
static int noauthset;
static int readonlyset;
static int resetparams;
@@ -432,6 +433,8 @@
if(!noauthset)
noauth = 0;
+ if(!nononeset)
+ nonone = 0;
if(!noatimeset)
noatime = 0;
if(!readonlyset)
@@ -450,6 +453,9 @@
} else if(strcmp(word, "noauth") == 0){if(!noauthset)
noauth = 1;
+ } else if(strcmp(word, "nonone") == 0){+ if(!nononeset)
+ nonone = 1;
} else if(strcmp(word, "noatime") == 0){if(!noatimeset)
noatime = 1;
@@ -600,6 +606,8 @@
fs->conf);
if(noauth)
cp = seprint(cp, ep, "noauth\n");
+ if(nonone)
+ cp = seprint(cp, ep, "nonone\n");
if(noatime)
cp = seprint(cp, ep, "noatime\n");
if(readonly)
@@ -1006,6 +1014,13 @@
noauth = !noauth;
print("auth %s\n", noauth ? "disabled" : "enabled");noauthset++;
+ f.modconf = 1;
+ continue;
+ }
+ if(strcmp(word, "nonone") == 0) {+ nonone = !nonone;
+ print("none %s\n", nonone ? "disabled" : "enabled");+ nononeset++;
f.modconf = 1;
continue;
}
--
⑨