linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@redhat.com>
To: NeilBrown <neilb@suse.de>
Cc: linux-nfs@vger.kernel.org, steved@redhat.com, bfields@fieldses.org
Subject: Re: rpc.mountd and character class matches
Date: Tue, 21 Jun 2011 20:55:06 -0400	[thread overview]
Message-ID: <20110621205506.71261a43@corrin.poochiereds.net> (raw)
In-Reply-To: <20110622083344.3575a424@notabene.brown>

On Wed, 22 Jun 2011 08:33:44 +1000
NeilBrown <neilb@suse.de> wrote:

> On Tue, 21 Jun 2011 11:26:45 -0400 Jeff Layton <jlayton@redhat.com> wrote:
> 
> > I was writing up the manpage update for exports to include info about
> > IPv6 addressing, and made a mistake on my first pass. I put the IPv6
> > address in brackets. It turned out that this worked because mountd
> > treats stuff in brackets as a character class wildcard match.
> > 
> > This behavior is undocumented in the manpage and it doesn't seem to
> > work correctly, but it's hard to be sure as I'm not sure what correct
> > behavior is for this.
> > 
> > For instance, I have a host with a valid hostname (tlielax) in DNS on
> > my subnet, and when I put this in /etc/exports:
> > 
> >     /export [whiskeytangofoxtrot](rw)
> > 
> > ...mountd allowed me to mount that. Normally a character class like
> > that should only match if you had a single-character hostname that
> > matches one of the characters in the brackets.
> > 
> > My question is -- do we want to continue to allow this sort of wildcard
> > match in mountd? Given that it's not documented, it's hard to imagine
> > anyone relying on it.
> 
> No, it isn't documented.  But the documentation does talk about
> 'wildcards' (though it only mentions '*' and '?') and [foo] is often a valid
> wildcard, so people could try to use it and if they find that it works...
> 
> I tried your example and it didn't work for me. I could not (from 'notabene')
> mount
>     /home [whiskeytangofoxtrot](rw,no_root_squash,async,no_subtree_check)
> 
> or
>     /home [notabene](rw,no_root_squash,async,no_subtree_check)
> 
> but I could mount
> 
>     /home [notabene]*(rw,no_root_squash,async,no_subtree_check)
> 
> and looking at the code (in support/nfs/wildmat.c) I cannot see how your
> pattern would match anything other than a single character hostname...
> 
> You did of course run "exportfs -r" after changing /etc/exports....
> 
> > 
> > If we do want to keep it, what's the behavior we should be shooting for
> > here?
> > 
> > Thoughts?
> 
> I think we should leave the current functionality in place (once we confirm
> that it works correctly as I think it does), possibly document it, but if the
> hostname looked like an IPv6 address in [], then special case that in much
> the same way that we special-case IP address.
> ie.   192.168.1.2 is a /32 subnetmask
>       one.nine.one.two is a host name
> 

I was pretty sure that I did that before, but I think you're correct
that I must have made a mistake in testing. I redid the above test and
it didn't allow me to mount. I also did some investigation and figured
out why having this was making it behave strangely:

    https://bugzilla.redhat.com/show_bug.cgi?id=714977#c4

I also played around with the test program in wildmat.c and I think the
character class matches are working as intended. Given that I don't see
any need to rip the code out, but I think we probably should document
it. I'll roll up a patch to do that soon.

I think with that, I don't really see any need to special case IPv6
addresses inside brackets. There's really no reason to use brackets
around them in /etc/exports as it doesn't use ':' as a delimiter. When
I do the patch to document character class wildcards, I'll also add a
note to the parts about IPv6 addresses and mention that brackets should
not be used around them in /etc/exports.

-- 
Jeff Layton <jlayton@redhat.com>

      reply	other threads:[~2011-06-22  0:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-21 15:26 rpc.mountd and character class matches Jeff Layton
2011-06-21 15:57 ` J. Bruce Fields
2011-06-21 22:33 ` NeilBrown
2011-06-22  0:55   ` Jeff Layton [this message]

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=20110621205506.71261a43@corrin.poochiereds.net \
    --to=jlayton@redhat.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=neilb@suse.de \
    --cc=steved@redhat.com \
    /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).