ima: add support for creating files using the mknodat syscall
authorMimi Zohar <zohar@linux.vnet.ibm.com>
Tue, 1 Mar 2016 00:52:05 +0000 (19:52 -0500)
committerMimi Zohar <zohar@linux.vnet.ibm.com>
Sun, 1 May 2016 13:23:52 +0000 (09:23 -0400)
commit05d1a717ec0430c916a749b94eb90ab74bbfa356
treed5283278e18669da5c76e41d1d33d58787dc61bc
parent42a4c603198f0d45b7aa936d3ac6ba1b8bd14a1b
ima: add support for creating files using the mknodat syscall

Commit 3034a14 "ima: pass 'opened' flag to identify newly created files"
stopped identifying empty files as new files.  However new empty files
can be created using the mknodat syscall.  On systems with IMA-appraisal
enabled, these empty files are not labeled with security.ima extended
attributes properly, preventing them from subsequently being opened in
order to write the file data contents.  This patch defines a new hook
named ima_post_path_mknod() to mark these empty files, created using
mknodat, as new in order to allow the file data contents to be written.

In addition, files with security.ima xattrs containing a file signature
are considered "immutable" and can not be modified.  The file contents
need to be written, before signing the file.  This patch relaxes this
requirement for new files, allowing the file signature to be written
before the file contents.

Changelog:
- defer identifying files with signatures stored as security.ima
  (based on Dmitry Rozhkov's comments)
- removing tests (eg. dentry, dentry->d_inode, inode->i_size == 0)
  (based on Al's review)

Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
Cc: Al Viro <<viro@zeniv.linux.org.uk>
Tested-by: Dmitry Rozhkov <dmitry.rozhkov@linux.intel.com>
fs/namei.c
include/linux/ima.h
security/integrity/ima/ima_appraise.c
security/integrity/ima/ima_main.c