From: arisawa <arisawa@ar.aichi-u.ac.jp>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] bug in exportfs
Date: Tue, 22 Dec 2015 19:02:55 +0900 [thread overview]
Message-ID: <23396C1E-C0AC-4DC5-B511-97B307ECB3A4@ar.aichi-u.ac.jp> (raw)
In-Reply-To: <CAK9Gx1d3j3jDFFdTwEZv+8p8WJ0h_-dG-HyKGEGCPrToCiEgQQ@mail.gmail.com>
No.
The difficulty is in the pattern matching rule.
If we want to export only /usr/glenda, then the pattern matching filer must pass
/usr
/usr/glenda
and must not pass
/usr/
have you get solution?
> 2015/12/22 18:25、Peter Hull <peterhull90@gmail.com> のメール:
>
> Mr Arisawa,
> Did you get any answers to this?
> Peter
>
>
> On Thu, 17 Dec 2015 at 13:06 arisawa <arisawa@ar.aichi-u.ac.jp> wrote:
> Thanks for your replay.
> however I don’t understand the intention of the manual.
> real needs in exporting is to export some different directories.
> it is impossible to do so under current code.
> can anyone show an example that exports two or more directories?
>
> > 2015/12/17 20:40、Peter Hull <peterhull90@gmail.com> のメール:
> >
> > On Wed, Dec 16, 2015 at 11:31 PM, arisawa <arisawa@ar.aichi-u.ac.jp> wrote:
> >> It seems cpu command is buggy in -P option.
> >> the sources of the problem is in command option -P of exportfs.
> >
> > I had a look at the manpage for exportfs(4), it says: "For a file to
> > be exported, all lines with a prefix + must match and all those with
> > prefix - must not match." (http://man.9front.org/4/exportfs)
> >
> > So isn't the original code correct according to the manpage? If any of
> > the regexps in 'include' fail to match, the function returns -1, then
> > if any in 'exclude' do match, -1 is returned.
> >
> >> patternfile sample
> >> + /usr/arisawa
> >> + /usr/glenda
> >> - /adm
> >> - /sys/log
> >> - /mail
> >> - /usr/.*
> >>
> > Is this sample invalid - no path could match /usr/arisawa and
> > /usr/glenda at the same time?
> >
> > Pete
>
> I said:
>
> > int
> > excludefile(char *path)
> > {
> > Reprog **re;
> > char *p;
> >
> > if(*(path+1) == 0)
> > p = "/";
> > else
> > p = path+1;
> >
> > DEBUG(DFD, "checking %s\n", p);
> > for(re = include; *re != nil; re++){
> > - if(regexec(*re, p, nil, 0) != 1){
> > + if(regexec(*re, p, nil, 0) == 1){
> > DEBUG(DFD, "excluded+ %s\n", p);
> > - return -1;
> > + return 0;
> > }
> > }
> > for(re = exclude; *re != nil; re++){
> > if(regexec(*re, p, nil, 0) == 1){
> > DEBUG(DFD, "excluded- %s\n", p);
> > return -1;
> > }
> > }
> > return 0;
> > }
> >
> >
> > patternfile sample
> > + /usr/arisawa
> > + /usr/glenda
> > - /adm
> > - /sys/log
> > - /mail
> > - /usr/.*
>
> however this code has still a problem.
>
> trailing ‘/‘ is removed in p even if p is a directory.
> assume we have users:
> /usr/rob
> and
> /usr/robin
> then we cannot export only /usr/rob.
> if we wish control this problem, we need tailing ‘/‘ for directory.
> then the code should be
>
> excludefile(char *path)
> {
> Reprog **re;
> char *p,*s;
> Dir *dir;
>
> if(*(path+1) == 0)
> p = "/";
> else
> p = path+1;
>
> s = p + strlen(p) - 1; /* tail */
> dir = dirstat(p);
> /* should not be nil */
> if((dir->mode)&DMDIR){
> /* we have room to append '/'
> * look makepath() in exportfs.c */
> *++s = '/';
> *++s = 0;
> }
>
> DEBUG(DFD, "checking %s\n", p);
> for(re = include; *re != nil; re++){
> if(regexec(*re, p, nil, 0) == 1){
> DEBUG(DFD, "excluded+ %s\n", p);
> return 0;
> }
> }
> for(re = exclude; *re != nil; re++){
> if(regexec(*re, p, nil, 0) == 1){
> DEBUG(DFD, "excluded- %s\n", p);
> return -1;
> }
> }
> return 0;
> }
>
> then patternfile sample become:
>
> + /usr/arisawa/.*
> + /usr/glenda/.*
> - /adm/
> - /sys/log/
> - /mail/
> - /usr/.+
>
> adding tailing ‘/‘ in p makes the pattern file incompatible to existing one.
> I don’t know it is better to do so.
>
>
>
next prev parent reply other threads:[~2015-12-22 10:02 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-16 23:31 arisawa
2015-12-17 11:40 ` Peter Hull
2015-12-17 13:05 ` arisawa
2015-12-22 9:25 ` Peter Hull
2015-12-22 10:02 ` arisawa [this message]
2016-02-13 14:26 ` Charles Forsyth
2016-02-14 2:00 ` Prof Brucee
2016-02-14 10:27 ` hiro
2016-02-14 12:21 ` Charles Forsyth
2016-02-14 12:33 ` Charles Forsyth
2016-02-14 16:38 ` cinap_lenrek
2016-02-14 22:57 ` Charles Forsyth
2016-02-15 1:05 ` arisawa
2016-02-15 6:12 ` Bruce Ellis
2016-02-15 10:34 ` Charles Forsyth
2016-02-15 10:55 ` lucio
2016-02-15 12:08 ` Charles Forsyth
2016-02-15 12:13 ` Brantley Coile
2016-02-15 15:05 ` lucio
2016-02-15 15:24 ` erik quanstrom
2016-02-15 12:44 ` lucio
2016-02-15 12:48 ` Charles Forsyth
2016-02-15 14:03 ` lucio
2016-02-15 15:38 ` erik quanstrom
2016-02-15 15:56 ` Skip Tavakkolian
2016-02-15 12:18 ` Charles Forsyth
2016-02-15 15:30 ` erik quanstrom
2016-02-15 23:32 ` Charles Forsyth
2016-02-19 14:12 ` Charles Forsyth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=23396C1E-C0AC-4DC5-B511-97B307ECB3A4@ar.aichi-u.ac.jp \
--to=arisawa@ar.aichi-u.ac.jp \
--cc=9fans@9fans.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).