All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Frank Filz" <ffilzlnx@mindspring.com>
To: "'Chuck Lever'" <chuck.lever@oracle.com>
Cc: "'Linux NFS Mailing List'" <linux-nfs@vger.kernel.org>
Subject: RE: NFSv4 security negotiation issue
Date: Tue, 15 Sep 2015 10:41:08 -0700	[thread overview]
Message-ID: <01a301d0efdd$b8106f00$28314d00$@mindspring.com> (raw)
In-Reply-To: <E19B018D-1578-4964-B29F-FC7BF361F977@oracle.com>

> On Sep 15, 2015, at 12:33 PM, Frank Filz <ffilzlnx@mindspring.com> wrote:
> 
> >> We've found an unexpected behavior with mount security negotiation in
> >> the current Linux NFS client.
> >>
> >> Given two real shares on an NFS server: one is a sys-only share, and
> >> the other is a krb5-only share. When we try to mount the sys-only
> >> share
> > without
> >> specifying a sec= option, it fails. Specifying sec=sys is successful.
> >>
> >> What is seen on the wire:
> >>
> >> 1. The client attempts to access the pseudofs, and negotiates
> >> krb5
> >>
> >> 2. The client walks down the pseudofs namespace to the sys-only share
> >>
> >> 3. The client attempts to access the sys-only share with krb5 and
> >> gets WRONGSEC
> >>
> >> 4. The client negotiates sys, and continues setting up the mount
> >>
> >> 5. nfs_fs_mount_common() invokes nfs_get_root(), but it uses the
> >> pseudofs superblock, so it does a GETATTR on the share's root
> >> directory
> > with
> >> krb5, and that fails
> >>
> >> At this point the client gives up, and the mount attempt fails.
> >>
> >> We could alter the server to allow a GETATTR with the same flavor as
> >> the underlying directory. But seems like the problem is on the
> >> client: it
> > should
> >> use the negotiated flavor that is appropriate to the share, not the
> >> flavor appropriate for the pseudofs.
> >>
> >> Any thoughts?
> >
> > Hmm, I thought maybe this was a scenario I had not tested, but I think
> > I'm misunderstanding the sequence. Could you summarize the ops and
> > response for each COMPOUND request?
> 
> There are two shares on the server.
> 
> The share being mounted is /export/CTHON. It is a sys-only share. No
"sec="
> option is used on the mount command. The expected outcome is that the
> mount will succeed and use sec=sys.
> 
> The share that is not being mounted here is /export/KRB5.
> It is shared with at least krb5i, which means the set of flavors the
server
> accepts for the pseudofs includes both krb5i and sys.
> 
> The client has already negotiated krb5i to access the pseudofs. I see a
> PUTROOTFH using krb5i and it is successful. The negotiation is not in the
trace
> I have.
> 
> I see a number of GETATTRs then a LOOKUP /export, all with krb5i, all
> successful.
> 
> Using krb5i, LOOKUP /CTHON, which fails with WRONGSEC.
> 
> Client recovers with SECINFO on /CTHON using krb5i. The server responds
> with a list containing just AUTH_UNIX.
> 
> Client tries the LOOKUP /CTHON again, now with sys. It works.
> 
> Similar GETATTR activity using sys as the client mounts this share.
> 
> Then one last GETATTR, this time using krb5i. The FH is the /export/CTHON
> directory. This fails with WRONGSEC.
> 
> The attr mask here is Supported Attrs, FH_Expire_type, Link_Support,
> Symlink_Support, ACLSupport. This is from nfs4_server_capabilities(),
which
> is invoked only in nfs4_proc_get_rootfh() and nfs4_proc_get_root().
> 
> The next operation OTW is a RENEW that happens a minute later.

  reply	other threads:[~2015-09-15 17:41 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-15 15:52 NFSv4 security negotiation issue Chuck Lever
2015-09-15 16:33 ` Frank Filz
2015-09-15 17:15   ` Chuck Lever
2015-09-15 17:41     ` Frank Filz [this message]
2015-09-15 18:17       ` Chuck Lever
2015-09-15 18:45         ` Frank Filz
2015-09-15 19:11           ` Chuck Lever
2015-09-15 20:28             ` Frank Filz
2015-09-15 20:36               ` Chuck Lever

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='01a301d0efdd$b8106f00$28314d00$@mindspring.com' \
    --to=ffilzlnx@mindspring.com \
    --cc=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.