]> git.apps.os.sepia.ceph.com Git - fscrypt.git/commit
Keyring support for v2 encryption policies
authorEric Biggers <ebiggers@google.com>
Mon, 16 Dec 2019 03:31:39 +0000 (19:31 -0800)
committerEric Biggers <ebiggers@google.com>
Sun, 5 Jan 2020 18:02:13 +0000 (10:02 -0800)
commit42e0dfe85ec7a75a2fa30c417d57eae60b5a881d
treeffa9fb08a5bbe51ec23bf219ef206ddc81799453
parent2b25de6d445faefc28629603dd754aec9f744e60
Keyring support for v2 encryption policies

Implement adding/removing v2 encryption policy keys to/from the kernel.
The kernel requires that the new ioctls FS_IOC_ADD_ENCRYPTION_KEY and
FS_IOC_REMOVE_ENCRYPTION_KEY be used for this.  Root is not required.

However, non-root support brings an extra complication: the kernel keeps
track of which users have called FS_IOC_ADD_ENCRYPTION_KEY for the same
key.  FS_IOC_REMOVE_ENCRYPTION_KEY only works as one of these users, and
it only removes the calling user's claim to the key; the key is only
truly removed when the last claim is removed.

Implement the following behavior:

- 'fscrypt unlock' and pam_fscrypt add the key for the user, even if
  other user(s) have it added already.  This behavior is needed so that
  another user can't remove the key out from under the user.

- 'fscrypt lock' and pam_fscrypt remove the key for the user.  However,
  if the key wasn't truly removed because other users still have it
  added, 'fscrypt lock' prints a warning.

- 'fscrypt status' shows whether the directory is unlocked for anyone.
README.md
actions/context.go
actions/policy.go
cmd/fscrypt/commands.go
cmd/fscrypt/errors.go
cmd/fscrypt/flags.go
cmd/fscrypt/status.go
keyring/fs_keyring.go
keyring/keyring.go
keyring/keyring_test.go
pam_fscrypt/pam_fscrypt.go