]> git.baikalelectronics.ru Git - kernel.git/commit
KEYS: Allow special keys (eg. DNS results) to be invalidated by CAP_SYS_ADMIN
authorDavid Howells <dhowells@redhat.com>
Thu, 17 Jul 2014 19:45:08 +0000 (20:45 +0100)
committerDavid Howells <dhowells@redhat.com>
Thu, 17 Jul 2014 19:45:08 +0000 (20:45 +0100)
commitbf612604be1f4cdb4572f7dc65c82611c89a1a8f
treed3c6cb9e81dd798b7383ed47a5fd5499b772a3ea
parent5f6d268707fae59469849349307e79ee5081cf22
KEYS: Allow special keys (eg. DNS results) to be invalidated by CAP_SYS_ADMIN

Special kernel keys, such as those used to hold DNS results for AFS, CIFS and
NFS and those used to hold idmapper results for NFS, used to be
'invalidateable' with key_revoke().  However, since the default permissions for
keys were reduced:

Commit: b4efdf4cde832057dc22651570fd2f295932ab05
KEYS: Reduce initial permissions on keys

it has become impossible to do this.

Add a key flag (KEY_FLAG_ROOT_CAN_INVAL) that will permit a key to be
invalidated by root.  This should not be used for system keyrings as the
garbage collector will try and remove any invalidate key.  For system keyrings,
KEY_FLAG_ROOT_CAN_CLEAR can be used instead.

After this, from userspace, keyctl_invalidate() and "keyctl invalidate" can be
used by any possessor of CAP_SYS_ADMIN (typically root) to invalidate DNS and
idmapper keys.  Invalidated keys are immediately garbage collected and will be
immediately rerequested if needed again.

Signed-off-by: David Howells <dhowells@redhat.com>
Tested-by: Steve Dickson <steved@redhat.com>
fs/nfs/idmap.c
include/linux/key.h
net/dns_resolver/dns_query.c
security/keys/keyctl.c