On Sun, Sep 22, 2019 at 04:16:58PM -0000, Jostein Fossheim wrote:
> We are working with several kerberos-REALMS and are trying to get our clients 
> to store their kerberos tickets in a DIRECTORY. This seems to work nicely for 
> clients not authenticating at login, with the following configuration set in 
> /etc/krb5.conf. 
> ...
> [libdefaults]
> ...
> 
> default_ccache_name = DIR:/tmp/krb5cc_%{uid}
> ...
> 
> user@server:~$ klist
> Ticket cache: DIR::/tmp/krb5cc_888/tkt
> Default principal: user@REALM
> 
> Valid starting     Expires            Service principal
> 09/22/19 17:35:50  09/23/19 17:35:48  krbtgt/user@REALM
> 
> Each ticket is stored in a separate file.  
> 
> For clients using sssd for login, I want to set up the same behavior. But 
> when I attempt to login the system creates an "/tmp/krb5cc_${UiD}" - but here 
> the directory don't get the excutable bit set (that is the directory get 
> 0600-permission), and the login fails.  
> 
> In the man-page from Debian-buster (sssd-version: 1.16.3), there are to 
> settings that seems to regulate this behaviour : 
> 
> krb5_ccachedir (string)
> Directory to store credential caches. All the substitution sequences of 
> krb5_ccname_template can be used here, too, except %d and %P. The directory 
> is created as private and owned by the user, with permissions set to 0700.
> 
> Default: /tmp
> 
> krb5_ccname_template (string)
> Location of the user's credential cache. Three credential cache types are 
> currently supported: "FILE", "DIR" and "KEYRING:persistent". The cache can be 
> specified either as TYPE:RESIDUAL, or as an absolute path, which implies the 
> "FILE" type. In the template, the following sequences are substituted:
> 
> [...]
> 
> If the template ends with 'XXXXXX' mkstemp(3) is used to create a unique 
> filename in a safe way.
> 
> When using KEYRING types, the only supported mechanism is 
> "KEYRING:persistent:%U", which uses the Linux kernel keyring to store 
> credentials on a per-UID basis. This is also the recommended choice, as it is 
> the most secure and predictable method.
> 
> The default value for the credential cache name is sourced from the profile 
> stored in the system wide krb5.conf configuration file in the [libdefaults] 
> section. The option name is default_ccache_name. See krb5.conf(5)'s PARAMETER 
> EXPANSION paragraph for additional information on the expansion format 
> defined by krb5.conf.
> 
> NOTE: Please be aware that libkrb5 ccache expansion template from 
> krb5.conf(5) uses different expansion sequences than SSSD.
> 
> Default: (from libkrb5)
> 
> ...
> 
> I have tried to both set and unset, the two parameters in question like this: 
> 
> krb5_ccachedir = /tmp/krb5cc_%U
> 
> krb5_ccname_template = DIR: %d
> krb5_ccname_template = DIR:%d/krb5cc_%U_XXXXXX
> 
> But the configuration-options seems to be ignored, no matter what I do, and I 
> have the same behavior: A non-executable directory is created and the user is 
> unable to login. 
> 
> If I set the +x bit on the directory manually as the root-user, everything 
> works. 

First, the DIR cache is not the most tested, to the best of my knowledge
no distribution uses it as the default. RHEL-6 uses FILE, RHEL-7 KEYRING
and RHEL-8 KCM. Looking at the code, the directories should be created
with 0700. I wonder if the permissions are OK if you use
/run/user/%uid/ccache or something similar instead?

Is there a reason to not use KEYRING?
_______________________________________________
sssd-users mailing list -- [email protected]
To unsubscribe send an email to [email protected]
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedorahosted.org/archives/list/[email protected]

Reply via email to