public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Staubach <staubach@redhat.com>
To: "J. Bruce Fields" <bfields@fieldses.org>
Cc: linux-nfs@vger.kernel.org
Subject: Re: [PATCH] nfsd: permit unauthenticated stat of export root
Date: Mon, 11 Aug 2008 17:27:56 -0400	[thread overview]
Message-ID: <48A0AEDC.3080308@redhat.com> (raw)
In-Reply-To: <20080807204154.GR18904@fieldses.org>

J. Bruce Fields wrote:
> On Thu, Aug 07, 2008 at 03:39:45PM -0400, Peter Staubach wrote:
>   
>> J. Bruce Fields wrote:
>>     
>>> On Thu, Aug 07, 2008 at 02:23:40PM -0400, Peter Staubach wrote:
>>>   
>>>       
>>>> J. Bruce Fields wrote:
>>>>     
>>>>         
>>>>> From: J. Bruce Fields <bfields@citi.umich.edu>
>>>>>
>>>>> RFC 2623 section 2.3.2 permits the server to bypass gss authentication
>>>>> checks for certain operations that a client may perform when mounting.
>>>>> In the case of a client that doesn't have some form of credentials
>>>>> available to it on boot, this allows it to perform the mount unattended.
>>>>> (Presumably real file access won't be needed until a user with
>>>>> credentials logs in.)
>>>>>
>>>>> Being slightly more lenient allows lots of old clients to access
>>>>> krb5-only exports, with the only loss being a small amount of
>>>>> information leaked about the root directory of the export.
>>>>>
>>>>> This affects on v2 and v3; v4 still requires authentication for all
>>>>> access.
>>>>>
>>>>> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
>>>>> ---
>>>>>  fs/nfsd/nfs3proc.c        |    5 +++--
>>>>>  fs/nfsd/nfsfh.c           |   30 ++++++++++++++++++++----------
>>>>>  fs/nfsd/nfsproc.c         |    6 ++++--
>>>>>  fs/nfsd/vfs.c             |    4 ++--
>>>>>  include/linux/nfsd/nfsd.h |    3 ++-
>>>>>  5 files changed, 31 insertions(+), 17 deletions(-)
>>>>>
>>>>> I intend to submit this for 2.6.28
>>>>>
>>>>> diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c
>>>>> index 4d617ea..1419142 100644
>>>>> --- a/fs/nfsd/nfs3proc.c
>>>>> +++ b/fs/nfsd/nfs3proc.c
>>>>> @@ -530,7 +530,7 @@ nfsd3_proc_fsstat(struct svc_rqst * rqstp, struct nfsd_fhandle    *argp,
>>>>>  	dprintk("nfsd: FSSTAT(3)   %s\n",
>>>>>  				SVCFH_fmt(&argp->fh));
>>>>>  -	nfserr = nfsd_statfs(rqstp, &argp->fh, &resp->stats);
>>>>> +	nfserr = nfsd_statfs(rqstp, &argp->fh, &resp->stats, 0);
>>>>>  	fh_put(&argp->fh);
>>>>>  	RETURN_STATUS(nfserr);
>>>>>  }
>>>>> @@ -558,7 +558,8 @@ nfsd3_proc_fsinfo(struct svc_rqst * rqstp, struct nfsd_fhandle    *argp,
>>>>>  	resp->f_maxfilesize = ~(u32) 0;
>>>>>  	resp->f_properties = NFS3_FSF_DEFAULT;
>>>>>  -	nfserr = fh_verify(rqstp, &argp->fh, 0, NFSD_MAY_NOP);
>>>>> +	nfserr = fh_verify(rqstp, &argp->fh, 0,
>>>>> +			NFSD_MAY_NOP | NFSD_MAY_BYPASS_GSS_ON_ROOT);
>>>>>   	/* Check special features of the file system. May request
>>>>>  	 * different read/write sizes for file systems known to have
>>>>>         
>>>>>           
>>>> I would think that you might want to have nfsd3_proc_getattr()
>>>> in this list too.  Some clients may need to generate a GETATTR
>>>> if they need the attributes for the root node.
>>>>     
>>>>         
>>> Do you know of any? rfc 2623 makes it sound like those clients are out
>>> of luck.  And testing confirms that this patch is sufficient for the
>>> linux client, at least.
>>>       
>> I believe that the Solaris client may.  I think that it may
>> use the attributes returned from the FSINFO call, if there
>> are any, to prevent the additional GETATTR, but this should
>> be tested.  It might also be interesting to test out a
>> readonly failover mount on the Solaris client to see what
>> behavior that that exhibits.
>>     
>
> OK, could be.  Volunteers to test that welcomed--for now I think I'll
> stick to the list in the RFC.

I think that RFC2623 doesn't quite completely describe the entire
situation.  I believe that Mike Eisler probably looked to see what
traffic that a client, like Solaris, generated, using some network
analysis tool such as snoop or wireshark, when mounting a file
system from a NetApp filer or a Solaris server.

These servers return post_op_attributes with the FSINFO response.
Thus, the client does not need to generate a GETATTR call in order
to retrieve the initial attributes, or more precisely, to retrieve
the file type.

The Linux NFS server does not return post_op_attributes with the
FSINFO response.  Thus, the client is forced to generate a
subsequent GETATTR call to retrieve the attributes.

A better description of the set of operations which should be
allowed and which ones are not should include a discussion on
the contents of the response to the FSINFO request.  If the
server returns attributes in the FSINFO response, then it does
not need to allow unauthenticated GETATTR requests.  If it does
not return attributes in the FSINFO response, then it must allow
unauthenticated GETATTR requests because this is required in
order to allow clients to successfully mount file systems using
strong authentication.

       ps

  parent reply	other threads:[~2008-08-11 21:27 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-07 18:11 [PATCH] nfsd: permit unauthenticated stat of export root J. Bruce Fields
2008-08-07 18:23 ` Peter Staubach
2008-08-07 19:16   ` J. Bruce Fields
2008-08-07 19:39     ` Peter Staubach
2008-08-07 20:41       ` J. Bruce Fields
2008-08-08 20:21         ` J. Bruce Fields
2008-08-08 20:32           ` Peter Staubach
2008-08-08 20:39             ` J. Bruce Fields
2008-08-11 20:51           ` Peter Staubach
2008-08-11 21:26             ` J. Bruce Fields
2008-08-11 21:29               ` Peter Staubach
2008-08-11 22:11                 ` J. Bruce Fields
2008-08-11 21:27         ` Peter Staubach [this message]
2008-08-11 21:38           ` Trond Myklebust
2008-08-12 15:43             ` J. Bruce Fields

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=48A0AEDC.3080308@redhat.com \
    --to=staubach@redhat.com \
    --cc=bfields@fieldses.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox