linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Simo Sorce <simo@redhat.com>
To: Chuck Lever <chuck.lever@oracle.com>, Scott Mayhew <smayhew@redhat.com>
Cc: Bruce Fields <bfields@fieldses.org>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 0/2] nfsd: add principal to the data being tracked by nfsdcld
Date: Fri, 30 Aug 2019 15:00:54 -0400	[thread overview]
Message-ID: <4598a6617fcb0123fb8c5c19e0ed2e489b242bcf.camel@redhat.com> (raw)
In-Reply-To: <A732539C-837A-4764-8281-C26E4203DE25@oracle.com>

On Fri, 2019-08-30 at 12:32 -0400, Chuck Lever wrote:
> Simo, any comments or questions?

Although it is unlikely, in most scenarios to have a principal name
longer than 1024 characters, it is definitely not impossible, given the
principal name for hosts is generally compose of 3 components:
- a short service name
- a fully qualified hostname
- a realm name

The service name is generally "nfs" or "host" in the NFSv4 case,
however the realm name can be arbitrarily large and usually is the
capitalized domain name where the realm resides.

While thinking about this I wondered, why not simply hash (SHA-256 for
example) the principal name and store the hash instead?

It will make the length fixed and uniform and probably often shorter
than the real principal names, so saving space in the general case.

I am not against truncating to 1024, but a hash would be more elegant
and correct.

Simo.


> Patches can be found here:
> 
> https://marc.info/?l=linux-nfs&m=156718239314526&w=2
> 
> https://marc.info/?l=linux-nfs&m=156718239414527&w=2
> 
> 
> > On Aug 30, 2019, at 12:26 PM, Scott Mayhew <smayhew@redhat.com> wrote:
> > 
> > At the spring bakeathon, Chuck suggested that we should store the
> > kerberos principal in addition to the client id string in nfsdcld.  The
> > idea is to prevent an illegitimate client from reclaiming another
> > client's opens by supplying that client's id string.
> > 
> > The first patch lays some groundwork for supporting multiple message
> > versions for the nfsdcld upcalls, adding fields for version and message
> > length to the nfsd4_client_tracking_ops (these fields are only used for
> > the nfsdcld upcalls and ignored for the other tracking methods), as well
> > as an upcall to get the maximum version supported by the userspace
> > daemon.
> > 
> > The second patch actually adds the v2 message, which adds the principal
> > (actually just the first 1024 bytes) to the Cld_Create upcall and to the
> > Cld_GraceStart downcall (which is what loads the data in the
> > reclaim_str_hashtbl). I couldn't really figure out what the maximum length
> > of a kerberos principal actually is (looking at krb5.h the length field in
> > the struct krb5_data is an unsigned int, so I guess it can be pretty big).
> > I don't think the principal will be that large in practice, and even if
> > it is the first 1024 bytes should be sufficient for our purposes.
> > 
> > Scott Mayhew (2):
> >  nfsd: add a "GetVersion" upcall for nfsdcld
> >  nfsd: add support for upcall version 2
> > 
> > fs/nfsd/nfs4recover.c         | 332 +++++++++++++++++++++++++++-------
> > fs/nfsd/nfs4state.c           |   6 +-
> > fs/nfsd/state.h               |   3 +-
> > include/uapi/linux/nfsd/cld.h |  37 +++-
> > 4 files changed, 311 insertions(+), 67 deletions(-)
> > 
> > -- 
> > 2.17.2
> > 
> 
> --
> Chuck Lever
> 
> 
> 

-- 
Simo Sorce
RHEL Crypto Team
Red Hat, Inc





  reply	other threads:[~2019-08-30 19:00 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-30 16:26 [PATCH 0/2] nfsd: add principal to the data being tracked by nfsdcld Scott Mayhew
2019-08-30 16:26 ` [PATCH 1/2] nfsd: add a "GetVersion" upcall for nfsdcld Scott Mayhew
2019-08-30 16:26 ` [PATCH 2/2] nfsd: add support for upcall version 2 Scott Mayhew
2019-08-30 16:32 ` [PATCH 0/2] nfsd: add principal to the data being tracked by nfsdcld Chuck Lever
2019-08-30 19:00   ` Simo Sorce [this message]
2019-09-04 20:58     ` Scott Mayhew
2019-09-05  0:50       ` Simo Sorce

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=4598a6617fcb0123fb8c5c19e0ed2e489b242bcf.camel@redhat.com \
    --to=simo@redhat.com \
    --cc=bfields@fieldses.org \
    --cc=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=smayhew@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).