Add krb5_set_home_dir_access.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24936 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -1263,3 +1263,65 @@ cleanup:
|
|||||||
free (tmp);
|
free (tmp);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allow homedir accces
|
||||||
|
*/
|
||||||
|
|
||||||
|
static HEIMDAL_MUTEX homedir_mutex = HEIMDAL_MUTEX_INITIALIZER;
|
||||||
|
static krb5_boolean allow_homedir = TRUE;
|
||||||
|
|
||||||
|
krb5_boolean
|
||||||
|
_krb5_homedir_access(krb5_context context)
|
||||||
|
{
|
||||||
|
krb5_boolean allow;
|
||||||
|
|
||||||
|
/* is never allowed for root */
|
||||||
|
if (geteuid() == 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (context && (context->flags & KRB5_CTX_F_HOMEDIR_ACCESS) == 0)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
HEIMDAL_MUTEX_lock(&homedir_mutex);
|
||||||
|
allow = allow_homedir;
|
||||||
|
HEIMDAL_MUTEX_lock(&homedir_mutex);
|
||||||
|
return allow;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable and disable home directory access on either the global state
|
||||||
|
* or the krb5_context state. By calling krb5_set_home_dir_access()
|
||||||
|
* with context set to NULL, the global state is configured otherwise
|
||||||
|
* the state for the krb5_context is modified.
|
||||||
|
*
|
||||||
|
* For home directory access to be allowed, both the global state and
|
||||||
|
* the krb5_context state have to be allowed.
|
||||||
|
*
|
||||||
|
* Administrator (root user), never uses the home directory.
|
||||||
|
*
|
||||||
|
* @param context a Kerberos 5 context or NULL
|
||||||
|
* @param allow allow if TRUE home directory
|
||||||
|
* @return the old value
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
krb5_boolean
|
||||||
|
krb5_set_home_dir_access(krb5_context context, krb5_boolean allow)
|
||||||
|
{
|
||||||
|
krb5_boolean old;
|
||||||
|
if (context) {
|
||||||
|
old = (context->flags & KRB5_CTX_F_HOMEDIR_ACCESS) ? TRUE : FALSE;
|
||||||
|
if (allow)
|
||||||
|
context->flags |= KRB5_CTX_F_HOMEDIR_ACCESS;
|
||||||
|
else
|
||||||
|
context->flags &= ~KRB5_CTX_F_HOMEDIR_ACCESS;
|
||||||
|
} else {
|
||||||
|
HEIMDAL_MUTEX_lock(&homedir_mutex);
|
||||||
|
old = allow_homedir;
|
||||||
|
allow_homedir = allow;
|
||||||
|
HEIMDAL_MUTEX_lock(&homedir_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
|
return old;
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user