ecryptfs: added ecryptfs_mount_auth_tok_only mount parameter
This patch adds a new mount parameter 'ecryptfs_mount_auth_tok_only' to force ecryptfs to use only authentication tokens which signature has been specified at mount time with parameters 'ecryptfs_sig' and 'ecryptfs_fnek_sig'. In this way, after disabling the passthrough and the encrypted view modes, it's possible to make available to users only files encrypted with the specified authentication token. Signed-off-by: Roberto Sassu <roberto.sassu@polito.it> Cc: Dustin Kirkland <kirkland@canonical.com> Cc: James Morris <jmorris@namei.org> [Tyler: Clean up coding style errors found by checkpatch] Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
This commit is contained in:
parent
39fac853a7
commit
f16feb5119
|
@ -377,6 +377,7 @@ struct ecryptfs_mount_crypt_stat {
|
|||
#define ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES 0x00000010
|
||||
#define ECRYPTFS_GLOBAL_ENCFN_USE_MOUNT_FNEK 0x00000020
|
||||
#define ECRYPTFS_GLOBAL_ENCFN_USE_FEK 0x00000040
|
||||
#define ECRYPTFS_GLOBAL_MOUNT_AUTH_TOK_ONLY 0x00000080
|
||||
u32 flags;
|
||||
struct list_head global_auth_tok_list;
|
||||
struct mutex global_auth_tok_list_mutex;
|
||||
|
|
|
@ -459,6 +459,15 @@ ecryptfs_find_auth_tok_for_sig(
|
|||
if (ecryptfs_find_global_auth_tok_for_sig(&global_auth_tok,
|
||||
mount_crypt_stat, sig)) {
|
||||
|
||||
/* if the flag ECRYPTFS_GLOBAL_MOUNT_AUTH_TOK_ONLY is set in the
|
||||
* mount_crypt_stat structure, we prevent to use auth toks that
|
||||
* are not inserted through the ecryptfs_add_global_auth_tok
|
||||
* function.
|
||||
*/
|
||||
if (mount_crypt_stat->flags
|
||||
& ECRYPTFS_GLOBAL_MOUNT_AUTH_TOK_ONLY)
|
||||
return -EINVAL;
|
||||
|
||||
rc = ecryptfs_keyring_auth_tok_for_sig(auth_tok_key, auth_tok,
|
||||
sig);
|
||||
} else
|
||||
|
|
|
@ -208,7 +208,8 @@ enum { ecryptfs_opt_sig, ecryptfs_opt_ecryptfs_sig,
|
|||
ecryptfs_opt_passthrough, ecryptfs_opt_xattr_metadata,
|
||||
ecryptfs_opt_encrypted_view, ecryptfs_opt_fnek_sig,
|
||||
ecryptfs_opt_fn_cipher, ecryptfs_opt_fn_cipher_key_bytes,
|
||||
ecryptfs_opt_unlink_sigs, ecryptfs_opt_err };
|
||||
ecryptfs_opt_unlink_sigs, ecryptfs_opt_mount_auth_tok_only,
|
||||
ecryptfs_opt_err };
|
||||
|
||||
static const match_table_t tokens = {
|
||||
{ecryptfs_opt_sig, "sig=%s"},
|
||||
|
@ -223,6 +224,7 @@ static const match_table_t tokens = {
|
|||
{ecryptfs_opt_fn_cipher, "ecryptfs_fn_cipher=%s"},
|
||||
{ecryptfs_opt_fn_cipher_key_bytes, "ecryptfs_fn_key_bytes=%u"},
|
||||
{ecryptfs_opt_unlink_sigs, "ecryptfs_unlink_sigs"},
|
||||
{ecryptfs_opt_mount_auth_tok_only, "ecryptfs_mount_auth_tok_only"},
|
||||
{ecryptfs_opt_err, NULL}
|
||||
};
|
||||
|
||||
|
@ -406,6 +408,10 @@ static int ecryptfs_parse_options(struct ecryptfs_sb_info *sbi, char *options)
|
|||
case ecryptfs_opt_unlink_sigs:
|
||||
mount_crypt_stat->flags |= ECRYPTFS_UNLINK_SIGS;
|
||||
break;
|
||||
case ecryptfs_opt_mount_auth_tok_only:
|
||||
mount_crypt_stat->flags |=
|
||||
ECRYPTFS_GLOBAL_MOUNT_AUTH_TOK_ONLY;
|
||||
break;
|
||||
case ecryptfs_opt_err:
|
||||
default:
|
||||
printk(KERN_WARNING
|
||||
|
|
Loading…
Reference in New Issue