On 02-03-17 14:55, Brendan Kearney wrote:
> On 03/02/2017 08:43 AM, Kees Bakker wrote:
>> On 02-03-17 13:34, Brendan Kearney wrote:
>>> On 03/02/2017 05:40 AM, Kees Bakker wrote:
>>>> On 24-02-17 14:38, Brendan Kearney wrote:
>>>>> On 02/24/2017 03:33 AM, Kees Bakker wrote:
>>>>>> On 23-02-17 15:39, Brendan Kearney wrote:
>>>>>>> On 02/23/2017 09:11 AM, Kees Bakker wrote:
>>>>>>>> On 23-02-17 13:51, Brendan Kearney wrote:
>>>>>>>>> On 02/23/2017 07:32 AM, Kees Bakker wrote:
>>>>>>>>>> On 22-02-17 17:33, Brendan Kearney wrote:
>>>>>>>>>>> On 02/22/2017 10:26 AM, Kees Bakker wrote:
>>>>>>>>>>>> On 22-02-17 14:05, Brendan Kearney wrote:
>>>>>>>>>>>>> On 02/22/2017 05:23 AM, Kees Bakker wrote:
>>>>>>>>>>>>>> On 21-02-17 19:49, Brendan Kearney wrote:
>>>>>>>>>>>>>>> On 02/21/2017 10:57 AM, Kees Bakker wrote:
>>>>>>>>>>>>>>>> Hey,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Maybe one of the NFS users on this list could give me a hint 
>>>>>>>>>>>>>>>> what
>>>>>>>>>>>>>>>> could be wrong. I'm not sure if it has any relation with 
>>>>>>>>>>>>>>>> FreeIPA/Kerberos.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I've set up an NFS server and I can mount the NFS directory on 
>>>>>>>>>>>>>>>> my client. So, I'm
>>>>>>>>>>>>>>>> guessing that setting up Kerberos principal was done correctly.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> However, only root can actually access the mounted contents. 
>>>>>>>>>>>>>>>> Any other user
>>>>>>>>>>>>>>>> only sees question marks as shown below.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> The mount command is simple.
>>>>>>>>>>>>>>>> $ sudo mount -v -t nfs srv1.example.com:/home /nfshome
>>>>>>>>>>>>>>>> mount.nfs: timeout set for Tue Feb 21 16:36:39 2017
>>>>>>>>>>>>>>>> mount.nfs: trying text-based options 
>>>>>>>>>>>>>>>> 'vers=4,addr=172.16.16.45,clientaddr=172.16.16.30'
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On the server side /etc/exports looks like this.
>>>>>>>>>>>>>>>> /home        *(rw,sync,sec=krb5i,no_subtree_check)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> $ sudo mount |grep nfs
>>>>>>>>>>>>>>>> srv1.example.com:/home on /nfshome type nfs4 
>>>>>>>>>>>>>>>> (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=krb5i,clientaddr=172.16.16.30,local_lock=none,addr=172.16.16.45)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> $ sudo ls -ld /nfshome
>>>>>>>>>>>>>>>> drwxr-xr-x 1 root root 72 feb 21 04:22 /nfshome
>>>>>>>>>>>>>>>> $ sudo ls -l /nfshome
>>>>>>>>>>>>>>>> total 0
>>>>>>>>>>>>>>>> drwxr-xr-x 1 keesb  keesb  116 jan 27 12:56 keesb
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> $ ls -l /nfshome
>>>>>>>>>>>>>>>> ls: cannot access '/nfshome': Permission denied
>>>>>>>>>>>>>>>> $ ls -l / | grep nfshome
>>>>>>>>>>>>>>>> ls: cannot access '/nfshome': Permission denied
>>>>>>>>>>>>>>>> d?????????   ? ?    ?       ?            ? nfshome
>>>>>>>>>>>>>>>>
>>>> [...]
>>>>
>>>> Continuing story...
>>>>
>>>> I've tried various things in the meantime. I've set up two test 
>>>> environments with virtual
>>>> machines (virtualbox).
>>>> * with Fedora 25; this works.
>>>> * with Ubuntu 16.04; I'm getting the same problem (permission denied and 
>>>> question marks).
>>>>
>>>> I also looked at the verbose output of rpc.gssd, it gives
>>>>
>>>> ERROR: GSS-API: error in gss_acquire_cred(): GSS_S_FAILURE (Unspecified 
>>>> GSS failure.  Minor code may provide more information) - Can't find client 
>>>> principal keesb@REALM in cache collection
>>> does the actual error message say @REALM, or did you substitute that to 
>>> obscure sensitive info?  if it does actually say @REALM, then you are 
>>> missing a config directive somewhere, that specifies the kerberos realm.
>> Be assured that I'm using the real thing.
>>
>>>> getting credentials for client with uid 60001 for server srv1.example.com
>>>> getting credentials for client with uid 60001 for server srv1.example.com
>>>> WARNING: Failed to create krb5 context for user with uid 60001 for server 
>>>> srv1.example.com
>> So rpc.gssd is trying to create a krb5 context. It succeeds for uid=0 but 
>> not for another
>> user.
>>
>> [...]
>>
>> Log when the user is listing the directory
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: handling gssd upcall 
>> (/run/rpc_pipefs/nfs/clnt14)
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: handle_gssd_upcall: 'mech=krb5 
>> uid=60001 enctypes=18,17,16,23,3,1,2 '
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: handling krb5 upcall 
>> (/run/rpc_pipefs/nfs/clnt14)
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: process_krb5_upcall: service is 
>> '<null>'
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: ERROR: GSS-API: error in 
>> gss_acquire_cred(): GSS_S_FAILURE (Unspecified GSS failure.  Minor code may 
>> provide more information) - Can't find client principal keesb@REALM in cache 
>> collection
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: getting credentials for client with 
>> uid 60001 for server srv1.example.com
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: CC '/tmp/krb5ccmachine_REALM' being 
>> considered, with preferred realm 'REALM'
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: CC '/tmp/krb5ccmachine_REALM' owned by 
>> 0, not 60001
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: getting credentials for client with 
>> uid 60001 for server srv1.example.com
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: WARNING: Failed to create krb5 context 
>> for user with uid 60001 for server srv1.example.com
>> Mar  2 14:24:00 clnt1 rpc.gssd[3612]: doing error downcall
>>
>> [...]
> file a bug
>
> [brendan@desktop ~]$ ll /tmp/
> total 36
> -rw------- 1 brendan brendan  4111 Mar  2 08:22 krb5cc_1000_9GeQKj
> -rw------- 1 root    root      579 Mar  1 10:08 krb5ccmachine_BPK2.COM
>
> users should never have, and never be required to have, access to the 
> machines kerberos credential cache.

That is indeed the clue.

On Ubuntu the credential cache is kept in the KEYRING. But gssd isn't looking 
for it.
If I create a credential cache in /tmp like so

  $   KRB5CCNAME=/tmp/krb5cc_keesb kinit

the access to the NFS now succeeds. Hurray :-)

  $   ls -l /nfshome/
  total 0
  drwxr-xr-x 1 keesb  keesb  116 jan 27 12:56 keesb

Is it a bug of gssd? I'm not sure. I think gssd has no keyring support
at all.

Fedora must do things differently, because there, it seems, the /tmp file is
present. How is that file created?
-- 
Kees

-- 
Manage your subscription for the Freeipa-users mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-users
Go to http://freeipa.org for more info on the project

Reply via email to