diff options
| author | J. Bruce Fields <bfields@citi.umich.edu> | 2008-08-07 13:00:20 -0400 | 
|---|---|---|
| committer | J. Bruce Fields <bfields@citi.umich.edu> | 2008-09-29 17:56:56 -0400 | 
| commit | 04716e6621ff4abb422d64ba7b48718f52716a3e (patch) | |
| tree | 742e2e7b6d4c7cf3a39f504000a49e57fe0b538b /fs/nfsd/vfs.c | |
| parent | 5dd248f6f1ffe1f691fd66749e2a3dc8f8eb7b5e (diff) | |
nfsd: permit unauthenticated stat of export root
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 only v2 and v3; v4 still requires authentication for all
access.
Thanks to Peter Staubach testing against a Solaris client, which
suggesting addition of v3 getattr, to the list, and to Trond for noting
that doing so exposes no additional information.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Cc: Peter Staubach <staubach@redhat.com>
Cc: Trond Myklebust <trond.myklebust@fys.uio.no>
Diffstat (limited to 'fs/nfsd/vfs.c')
| -rw-r--r-- | fs/nfsd/vfs.c | 4 | 
1 files changed, 2 insertions, 2 deletions
| diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 18060bed5267..1319e8027d55 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -1866,9 +1866,9 @@ out:   * N.B. After this call fhp needs an fh_put   */  __be32 -nfsd_statfs(struct svc_rqst *rqstp, struct svc_fh *fhp, struct kstatfs *stat) +nfsd_statfs(struct svc_rqst *rqstp, struct svc_fh *fhp, struct kstatfs *stat, int access)  { -	__be32 err = fh_verify(rqstp, fhp, 0, NFSD_MAY_NOP); +	__be32 err = fh_verify(rqstp, fhp, 0, NFSD_MAY_NOP | access);  	if (!err && vfs_statfs(fhp->fh_dentry,stat))  		err = nfserr_io;  	return err; | 
