Date: Fri, 2 May 2014 20:19:07 -0400 (EDT) From: Rick Macklem <rmacklem@uoguelph.ca> To: Rick Macklem <rmacklem@FreeBSD.org> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r265252 - in head/sys/fs: nfs nfsserver Message-ID: <1749211976.1376200.1399076347872.JavaMail.root@uoguelph.ca> In-Reply-To: <201405030013.s430DjDp034424@svn.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
I wrote: > Author: rmacklem > Date: Sat May 3 00:13:45 2014 > New Revision: 265252 > URL: http://svnweb.freebsd.org/changeset/base/265252 > > Log: > The new draft specification for NFSv4.0 specifies that a server > should either accept owner and owner_group strings that are just > the digits of the uid/gid or return NFS4ERR_BADOWNER. > This patch adds a sysctl vfs.nfsd.enable_stringtouid, which can > be set to enable the server w.r.t. accepting numeric string. It > also ensures that NFS4ERR_BADOWNER is returned if numeric uid/gid > strings are not enabled. This fixes the server for recent Linux > nfs4 clients that use numeric uid/gid strings by default. > > Reported and tested by: craigyk@gmail.com > MFC after: 2 weeks > Oops, I meant to MFC in 1 week, since I'd like to get this in 9.3. rick > Modified: > head/sys/fs/nfs/nfs_commonsubs.c > head/sys/fs/nfsserver/nfs_nfsdport.c > > Modified: head/sys/fs/nfs/nfs_commonsubs.c > ============================================================================== > --- head/sys/fs/nfs/nfs_commonsubs.c Fri May 2 23:47:14 2014 > (r265251) > +++ head/sys/fs/nfs/nfs_commonsubs.c Sat May 3 00:13:45 2014 > (r265252) > @@ -65,6 +65,7 @@ uid_t nfsrv_defaultuid; > gid_t nfsrv_defaultgid; > int nfsrv_lease = NFSRV_LEASE; > int ncl_mbuf_mlen = MLEN; > +int nfsd_enable_stringtouid = 0; > NFSNAMEIDMUTEX; > NFSSOCKMUTEX; > > @@ -2640,9 +2641,14 @@ nfsv4_strtouid(struct nfsrv_descript *nd > /* If a string of digits and an AUTH_SYS mount, just convert it. */ > str0 = str; > tuid = (uid_t)strtoul(str0, &endstr, 10); > - if ((endstr - str0) == len && > - (nd->nd_flag & (ND_KERBV | ND_NFSCL)) == ND_NFSCL) { > - *uidp = tuid; > + if ((endstr - str0) == len) { > + /* A numeric string. */ > + if ((nd->nd_flag & ND_KERBV) == 0 && > + ((nd->nd_flag & ND_NFSCL) != 0 || > + nfsd_enable_stringtouid != 0)) > + *uidp = tuid; > + else > + error = NFSERR_BADOWNER; > goto out; > } > /* > @@ -2845,9 +2851,14 @@ nfsv4_strtogid(struct nfsrv_descript *nd > /* If a string of digits and an AUTH_SYS mount, just convert it. */ > str0 = str; > tgid = (gid_t)strtoul(str0, &endstr, 10); > - if ((endstr - str0) == len && > - (nd->nd_flag & (ND_KERBV | ND_NFSCL)) == ND_NFSCL) { > - *gidp = tgid; > + if ((endstr - str0) == len) { > + /* A numeric string. */ > + if ((nd->nd_flag & ND_KERBV) == 0 && > + ((nd->nd_flag & ND_NFSCL) != 0 || > + nfsd_enable_stringtouid != 0)) > + *gidp = tgid; > + else > + error = NFSERR_BADOWNER; > goto out; > } > /* > > Modified: head/sys/fs/nfsserver/nfs_nfsdport.c > ============================================================================== > --- head/sys/fs/nfsserver/nfs_nfsdport.c Fri May 2 23:47:14 2014 > (r265251) > +++ head/sys/fs/nfsserver/nfs_nfsdport.c Sat May 3 00:13:45 2014 > (r265252) > @@ -80,6 +80,7 @@ static int nfs_commit_blks; > static int nfs_commit_miss; > extern int nfsrv_issuedelegs; > extern int nfsrv_dolocallocks; > +extern int nfsd_enable_stringtouid; > > SYSCTL_NODE(_vfs, OID_AUTO, nfsd, CTLFLAG_RW, 0, "New NFS server"); > SYSCTL_INT(_vfs_nfsd, OID_AUTO, mirrormnt, CTLFLAG_RW, > @@ -92,6 +93,8 @@ SYSCTL_INT(_vfs_nfsd, OID_AUTO, issue_de > &nfsrv_issuedelegs, 0, "Enable nfsd to issue delegations"); > SYSCTL_INT(_vfs_nfsd, OID_AUTO, enable_locallocks, CTLFLAG_RW, > &nfsrv_dolocallocks, 0, "Enable nfsd to acquire local locks on > files"); > +SYSCTL_INT(_vfs_nfsd, OID_AUTO, enable_stringtouid, CTLFLAG_RW, > + &nfsd_enable_stringtouid, 0, "Enable nfsd to accept numeric > owner_names"); > > #define MAX_REORDERED_RPC 16 > #define NUM_HEURISTIC 1031 > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1749211976.1376200.1399076347872.JavaMail.root>