Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.debian.user > #188248
| From | John Ratliff <john@bluemarble.net> |
|---|---|
| Newsgroups | linux.debian.user |
| Subject | Re: NFSv4 without Kerberos and permissions |
| Date | 2017-10-24 19:30 +0200 |
| Message-ID | <uEbbz-5GE-1@gated-at.bofh.it> (permalink) |
| References | (2 earlier) <uAGnD-e7-1@gated-at.bofh.it> <uALGG-3DX-3@gated-at.bofh.it> <uBhQd-6ZM-3@gated-at.bofh.it> <uBjp0-8ck-15@gated-at.bofh.it> <uCtvX-5hJ-1@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On 10/19/2017 8:31 PM, John Ratliff wrote: > On 10/16/2017 3:35 PM, Christian Seiler wrote: >> On 10/16/2017 07:57 PM, John Ratliff wrote: >>> On 10/15/2017 3:38 AM, Christian Seiler wrote: >>>> Furthermore, the MANAGED_GIDS setting is only for NFSv2/3 and only >>>> for supplementary groups, not the primary group. It is not a security >>>> setting, it really is just for bypassing the 16 group limit of older >>>> NFS protocols, and is useless with NFSv4. >>> >>> I'm not sure this is entirely the case. Turning off managed GIDs and >>> using an NFSv4 mount (i.e. on client: mount -t nfs4 blahblahblah), >>> this let me use secondary groups on the server. Before, I could not. >> >> Sorry, you're right. rpc.mountd is typically only NFSv2/3, but with >> NFSv4 it does provide some corner case functionality (I rechecked >> the code just now) and MANAGED_GIDS is one of those. >> > > > Okay, I am unable to make this work. Perhaps I am still confused as to > how id mapping works. > > Here is my test setup. > > 1) Debian 9 NFS4 Server > > /etc/hosts.deny is empty > /etc/hosts.allow > ALL: ALL > > iptables is wide open. > > $ sudo iptables -L > Chain INPUT (policy ACCEPT) > target prot opt source destination > > Chain FORWARD (policy ACCEPT) > target prot opt source destination > > Chain OUTPUT (policy ACCEPT) > target prot opt source destination > > Server is on 10.9.111.1/16 > > /etc/exports is > > /srv/nfs4 10.9.0.0/16(rw,sync,fsid=0,crossmnt,no_subtree_check) > /srv/nfs4/ssl 10.9.0.0/16(rw,sync,no_subtree_check) > /srv/nfs4/ssl/wildcard 10.9.0.0/16(ro,sync,no_subtree_check) > > I have set nfs_disable_idmapping to 0 > > $ cat /sys/module/nfsd/parameters/nfs4_disable_idmapping > N > > This is my /srv/nfs4 file structure: > > $ ls -lR /srv/nfs4 > /srv/nfs4: > total 4 > drwxr-sr-x 3 root ssl-cert 4096 Oct 19 20:01 ssl > > /srv/nfs4/ssl: > total 12 > -rw-r----- 1 root ssl-cert 24 Oct 19 18:43 private.txt > -rw-r--r-- 1 root ssl-cert 22 Oct 19 18:43 public.txt > drwxr-s--- 2 root ssl-cert 4096 Oct 19 18:43 wildcard > > /srv/nfs4/ssl/wildcard: > total 8 > -rw-r----- 1 root ssl-cert 24 Oct 19 18:43 private.txt > -rw-r--r-- 1 root ssl-cert 22 Oct 19 18:43 public.txt > > There are five users on the server. These are their permissions: > > $ id jratliff > uid=1000(jratliff) gid=1000(jratliff) > groups=1000(jratliff),27(sudo),100(users),112(ssl-cert) > > $ id jbail > uid=1001(jbail) gid=1001(jbail) groups=1001(jbail),27(sudo),100(users) > > $ id john > uid=1003(john) gid=1003(john) groups=1003(john),112(ssl-cert) > > $ id matt > uid=2049(matt) gid=2049(matt) groups=2049(matt),112(ssl-cert) > > $ id austin > uid=2050(austin) gid=2050(austin) groups=2050(austin) > > Based on this configuration, I would expect the following: > > Users jratliff@domain, john@domain, and matt@domain should be able to > read the private.txt file and enter the wildcard directory. > > Users jbail@domain and austin@domain should not be able to do those things. > ------------------------------------ > > 2) Ubuntu 14.04 LTS Client > > Very similar settings. Open tcp wrappers, open firewalls, same subnet > (10.9.111.2/16). > > I removed nfs4_disable_idmapping in both the nfsd and nfs modules. > > $ cat /sys/module/nfsd/parameters/nfs4_disable_idmapping > N > > $ cat /sys/module/nfs/parameters/nfs4_disable_idmapping > N > > Same five users, but the UIDs have been changed a bit. > > jratliff is uid 1000 > jbail is uid 1001 > matt is uid 1003 > austin is uid 1002 > john is uid 1004 > > As expected, jratliff and matt can read the private files. jbail and > austin cannot. However, neither can john. > > So why do jratliff and matt work while john does not? My hypothesis is > that the UIDs work out that way. > > jratliff has the same UID, so the group membership maps properly. > jratliff is a member of ssl-cert on the server, so everything is fine. > Matt is also a member of ssl-cert, but this isn't why he can read the > files; he can read it because his UID is 1003, which maps to john on the > server. User john on the server is a member of ssl-cert, so Matt is > become john. In this case, john does not map to anyone on the server, > and so he has no permissions. Therefore, john cannot read the private > files. > > Second hypothesis: Ubuntu 14 is broken. > > --------------------------------------- > > 3) Debian 9 Client > > Again, very similar settings. 10.9.111.3/16 is the IP. > Same five users, but I made one change from the server to the client in > UIDs. > > jratliff is uid 1000 > jbail is uid 1001 > matt is uid 3333 > austin is uid 2050 > john is uid 1003 > > Again, jratliff can read the private files. jbail and austin cannot. > This is expected. I thought matt would be able to read the files, but > matt cannot. This seems to be because matt is UID 3333 which means > nothing on the server, permissions-wise anyways. > > This time, user john can read the private files, which makes sense > because he is UID 1003, the same as on the server, and is a member of > ssl-cert on the server. > > So, Ubuntu 14 seems to work the same as Debian 9, which is expected > behavior. It probably isn't broken. > > ---------------------------------- > > So, is my understand of ID Mapping still flawed? Here's what I see > happening: > > Client sends UID/GID/GIDs to server in a RPC. Client does not send > username or group name strings. I have used wire shark and I cannot find > any trace of any user or group name within the transferred between > client and server. > > Server maps UID sent to local UID. Server ignores secondary GIDs because > --manage-gids is set on the server. Server checks permissions against > UID, GID, and GIDs on the server attached to the sent UID. If the > permissions match, everything goes ahead. IF they do not, permission is > denied. > > So, I really don't know what id mapping is supposed to do, but it does > not appear to be doing what I thought you were telling me it would do. > All evidence I had previously gathered to the contrary seems to be the > result of coincidence and convergence of UIDs based on my test > environment and lack of complete and thorough testing of variables until > now. > > Thanks for any further insights. > > --John > I've decided I will just sync the UIDs and have the server manage groups and GIDs. --John
Back to linux.debian.user | Previous | Next — Previous in thread | Find similar | Unroll thread
NFSv4 without Kerberos and permissions John Ratliff <john@bluemarble.net> - 2017-10-14 21:30 +0200
Re: NFSv4 without Kerberos and permissions Elena evlt <elenadp.evlt@gmail.com> - 2017-10-14 21:40 +0200
Re: NFSv4 without Kerberos and permissions John Ratliff <john@bluemarble.net> - 2017-10-15 04:00 +0200
Re: NFSv4 without Kerberos and permissions Christian Seiler <christian@iwakd.de> - 2017-10-15 09:40 +0200
Re: NFSv4 without Kerberos and permissions John Ratliff <john@bluemarble.net> - 2017-10-16 20:00 +0200
Re: NFSv4 without Kerberos and permissions Christian Seiler <christian@iwakd.de> - 2017-10-16 21:40 +0200
Re: NFSv4 without Kerberos and permissions John Ratliff <john@bluemarble.net> - 2017-10-20 02:40 +0200
Re: NFSv4 without Kerberos and permissions John Ratliff <john@bluemarble.net> - 2017-10-24 19:30 +0200
csiph-web