mount, srv: add -N flag to skip authentication and attach anonymously as "none"
This commit is contained in:
parent
b241dd1159
commit
23742053f5
4 changed files with 47 additions and 18 deletions
|
@ -144,7 +144,7 @@ operation fails.
|
||||||
.PD
|
.PD
|
||||||
.PP
|
.PP
|
||||||
.I Mount
|
.I Mount
|
||||||
takes two additional options.
|
takes three additional options.
|
||||||
The first,
|
The first,
|
||||||
.B -k
|
.B -k
|
||||||
.IR keypattern ,
|
.IR keypattern ,
|
||||||
|
@ -156,6 +156,11 @@ The second,
|
||||||
causes
|
causes
|
||||||
.I mount
|
.I mount
|
||||||
to skip authentication entirely.
|
to skip authentication entirely.
|
||||||
|
The third,
|
||||||
|
.BR -N ,
|
||||||
|
skips authentication and specifies
|
||||||
|
.B none
|
||||||
|
as the username to the fileserver.
|
||||||
.PP
|
.PP
|
||||||
The
|
The
|
||||||
.I spec
|
.I spec
|
||||||
|
|
|
@ -4,7 +4,7 @@ srv, srvold9p, 9fs, srvssh \- start network file service
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B srv
|
.B srv
|
||||||
[
|
[
|
||||||
.B -abcCemnq
|
.B -abcCemnNq
|
||||||
] [
|
] [
|
||||||
.B -s
|
.B -s
|
||||||
.I seconds
|
.I seconds
|
||||||
|
@ -114,7 +114,8 @@ The
|
||||||
.BR c ,
|
.BR c ,
|
||||||
.BR C ,
|
.BR C ,
|
||||||
and
|
and
|
||||||
.B n
|
.BR n ,
|
||||||
|
.B N
|
||||||
options are used to control the mount flags as in
|
options are used to control the mount flags as in
|
||||||
.I mount
|
.I mount
|
||||||
(see
|
(see
|
||||||
|
|
|
@ -6,6 +6,11 @@ void usage(void);
|
||||||
void catch(void*, char*);
|
void catch(void*, char*);
|
||||||
|
|
||||||
char *keyspec = "";
|
char *keyspec = "";
|
||||||
|
char *spec = "";
|
||||||
|
int flag = MREPL;
|
||||||
|
int qflag = 0;
|
||||||
|
int noauth = 0;
|
||||||
|
int asnone = 0;
|
||||||
|
|
||||||
int
|
int
|
||||||
amount0(int fd, char *mntpt, int flags, char *aname, char *keyspec)
|
amount0(int fd, char *mntpt, int flags, char *aname, char *keyspec)
|
||||||
|
@ -30,10 +35,6 @@ amount0(int fd, char *mntpt, int flags, char *aname, char *keyspec)
|
||||||
void
|
void
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
char *spec;
|
|
||||||
ulong flag = 0;
|
|
||||||
int qflag = 0;
|
|
||||||
int noauth = 0;
|
|
||||||
int fd, rv;
|
int fd, rv;
|
||||||
|
|
||||||
ARGBEGIN{
|
ARGBEGIN{
|
||||||
|
@ -52,6 +53,9 @@ main(int argc, char *argv[])
|
||||||
case 'k':
|
case 'k':
|
||||||
keyspec = EARGF(usage());
|
keyspec = EARGF(usage());
|
||||||
break;
|
break;
|
||||||
|
case 'N':
|
||||||
|
asnone = 1;
|
||||||
|
/* no break */
|
||||||
case 'n':
|
case 'n':
|
||||||
noauth = 1;
|
noauth = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -62,12 +66,9 @@ main(int argc, char *argv[])
|
||||||
usage();
|
usage();
|
||||||
}ARGEND
|
}ARGEND
|
||||||
|
|
||||||
spec = 0;
|
if(argc == 3)
|
||||||
if(argc == 2)
|
|
||||||
spec = "";
|
|
||||||
else if(argc == 3)
|
|
||||||
spec = argv[2];
|
spec = argv[2];
|
||||||
else
|
else if(argc != 2)
|
||||||
usage();
|
usage();
|
||||||
|
|
||||||
if((flag&MAFTER)&&(flag&MBEFORE))
|
if((flag&MAFTER)&&(flag&MBEFORE))
|
||||||
|
@ -81,6 +82,16 @@ main(int argc, char *argv[])
|
||||||
exits("open");
|
exits("open");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(asnone){
|
||||||
|
rv = open("#c/user", OWRITE);
|
||||||
|
if(rv < 0 || write(rv, "none", 4) != 4){
|
||||||
|
if(qflag)
|
||||||
|
exits(0);
|
||||||
|
fprint(2, "%s: can't become none: %r\n", argv0);
|
||||||
|
exits("becomenone");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
notify(catch);
|
notify(catch);
|
||||||
if(noauth)
|
if(noauth)
|
||||||
rv = mount(fd, -1, argv[1], flag, spec);
|
rv = mount(fd, -1, argv[1], flag, spec);
|
||||||
|
@ -96,16 +107,15 @@ main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
catch(void *x, char *m)
|
catch(void *, char *m)
|
||||||
{
|
{
|
||||||
USED(x);
|
fprint(2, "%s: %s\n", argv0, m);
|
||||||
fprint(2, "mount: %s\n", m);
|
|
||||||
exits(m);
|
exits(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
fprint(2, "usage: mount [-a|-b] [-cnq] [-k keypattern] /srv/service dir [spec]\n");
|
fprint(2, "usage: mount [-a|-b] [-cCnNq] [-k keypattern] /srv/service dir [spec]\n");
|
||||||
exits("usage");
|
exits("usage");
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,13 @@ void rpc(int, int);
|
||||||
void post(char*, int);
|
void post(char*, int);
|
||||||
void mountfs(char*, int);
|
void mountfs(char*, int);
|
||||||
int doauth = 1;
|
int doauth = 1;
|
||||||
|
int asnone = 0;
|
||||||
|
|
||||||
void
|
void
|
||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
fprint(2, "usage: %s [-abcCm] [net!]host [srvname [mtpt]]\n", argv0);
|
fprint(2, "usage: %s [-abcCmnNq] [net!]host [srvname [mtpt]]\n", argv0);
|
||||||
fprint(2, " or %s -e [-abcCm] command [srvname [mtpt]]\n", argv0);
|
fprint(2, " or %s -e [-abcCmnNq] command [srvname [mtpt]]\n", argv0);
|
||||||
|
|
||||||
exits("usage");
|
exits("usage");
|
||||||
}
|
}
|
||||||
|
@ -106,6 +107,9 @@ main(int argc, char *argv[])
|
||||||
domount = 1;
|
domount = 1;
|
||||||
reallymount = 1;
|
reallymount = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'N':
|
||||||
|
asnone = 1;
|
||||||
|
/* no break */
|
||||||
case 'n':
|
case 'n':
|
||||||
doauth = 0;
|
doauth = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -197,6 +201,15 @@ Mount:
|
||||||
if(domount == 0 || reallymount == 0)
|
if(domount == 0 || reallymount == 0)
|
||||||
exits(0);
|
exits(0);
|
||||||
|
|
||||||
|
if(asnone){
|
||||||
|
try = open("#c/user", OWRITE);
|
||||||
|
if(try < 0 || write(try, "none", 4) != 4){
|
||||||
|
fprint(2, "srv %s: can't become none: %r\n", dest);
|
||||||
|
exits("becomenone");
|
||||||
|
}
|
||||||
|
try = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if((!doauth && mount(fd, -1, mtpt, mountflag, "") < 0)
|
if((!doauth && mount(fd, -1, mtpt, mountflag, "") < 0)
|
||||||
|| (doauth && amount(fd, mtpt, mountflag, "") < 0)){
|
|| (doauth && amount(fd, mtpt, mountflag, "") < 0)){
|
||||||
err[0] = 0;
|
err[0] = 0;
|
||||||
|
|
Loading…
Reference in a new issue