[systemd-devel] [PATCH v3] 98integrity: Use /etc/ima as dir for IMA policy and config file

Stefan Berger stefanb at linux.vnet.ibm.com
Wed Nov 30 16:18:54 UTC 2016


From: Stefan Berger <stefanb at us.ibm.com>

To sync with systemd, use the filepath /etc/ima/ima-policy as
the default file location for the IMA policy. At the same time we
move the ima config file location to /etc/ima/ima. Adapt the
documentation to the new path. Maintain backwards compatibility
by still reading the old files in case the new ones do not exist.

Signed-off-by: Stefan Berger <stefanb at linux.vnet.ibm.com>
---
 modules.d/98integrity/README             |  8 ++++----
 modules.d/98integrity/ima-keys-load.sh   |  7 ++++++-
 modules.d/98integrity/ima-policy-load.sh | 20 +++++++++++++++++---
 3 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/modules.d/98integrity/README b/modules.d/98integrity/README
index 64de0ae..c8ccee5 100644
--- a/modules.d/98integrity/README
+++ b/modules.d/98integrity/README
@@ -33,10 +33,10 @@ line.
 
 # Save the policy in a file.
 
-# Create the configuration file '/etc/sysconfig/ima' to override the path name of
+# Create the configuration file '/etc/ima/ima' to override the path name of
 # the IMA custom policy.
-------------- '/etc/sysconfig/ima' (with the default value) -------------
-IMAPOLICY="/etc/sysconfig/ima-policy"
+------------- '/etc/ima/ima' (with the default value) -------------
+IMAPOLICY="/etc/ima/ima-policy"
 -------------------------------------------------------------------------
 
 
@@ -64,5 +64,5 @@ IMAPOLICY="/etc/sysconfig/ima-policy"
 
 # 98integrity/ima-keys-load.sh script loads the signed certificates stored 
 # in the $IMAKEYSDIR onto the trusted IMA keyring.  The default $IMAKEYSDIR
-# directory is /etc/keys/ima, but can be specified in the /etc/sysconfig/ima
+# directory is /etc/keys/ima, but can be specified in the /etc/ima/ima
 # policy.
diff --git a/modules.d/98integrity/ima-keys-load.sh b/modules.d/98integrity/ima-keys-load.sh
index 659b722..922af1e 100755
--- a/modules.d/98integrity/ima-keys-load.sh
+++ b/modules.d/98integrity/ima-keys-load.sh
@@ -2,7 +2,10 @@
 
 SECURITYFSDIR="/sys/kernel/security"
 IMASECDIR="${SECURITYFSDIR}/ima"
-IMACONFIG="${NEWROOT}/etc/sysconfig/ima"
+IMACONFIG="${NEWROOT}/etc/ima/ima"
+
+# for backwards compatibility
+IMACONFIG_OLD="${NEWROOT}/etc/sysconfig/ima"
 
 load_x509_keys()
 {
@@ -11,6 +14,8 @@ load_x509_keys()
     # override the default configuration
     if [ -f "${IMACONFIG}" ]; then
         . ${IMACONFIG}
+    elif [ -f "${IMACONFIG_OLD}" ]; then
+        . ${IMACONFIG_OLD}
     fi
 
     if [ -z "${IMAKEYDIR}" ]; then
diff --git a/modules.d/98integrity/ima-policy-load.sh b/modules.d/98integrity/ima-policy-load.sh
index 85cd3b9..a92b1bb 100755
--- a/modules.d/98integrity/ima-policy-load.sh
+++ b/modules.d/98integrity/ima-policy-load.sh
@@ -5,10 +5,19 @@
 # Copyright (C) 2011 Politecnico di Torino, Italy
 #                    TORSEC group -- http://security.polito.it
 # Roberto Sassu <roberto.sassu at polito.it>
+#
+# Copyright (C) 2016 IBM Corporation
+#
+# Stefan Berger <stefanb at linux.vnet.ibm.com>
+#
 
 IMASECDIR="${SECURITYFSDIR}/ima"
-IMACONFIG="${NEWROOT}/etc/sysconfig/ima"
-IMAPOLICY="/etc/sysconfig/ima-policy"
+IMACONFIG="${NEWROOT}/etc/ima/ima"
+IMAPOLICY="/etc/ima/ima-policy"
+
+# for backwards compatibility
+IMACONFIG_OLD="${NEWROOT}/etc/sysconfig/ima"
+IMAPOLICY_OLD="/etc/sysconfig/ima-policy"
 
 load_ima_policy()
 {
@@ -21,11 +30,16 @@ load_ima_policy()
     fi
 
     # override the default configuration
-    [ -f "${IMACONFIG}" ] && \
+    if [ -f "${IMACONFIG}" ]; then
         . ${IMACONFIG}
+    elif [ -f "${IMACONFIG_OLD}" ]; then
+        . ${IMACONFIG_OLD}
+    fi
 
     # set the IMA policy path name
     IMAPOLICYPATH="${NEWROOT}${IMAPOLICY}"
+    [ ! -f "${IMAPOLICYPATH}" ] && \
+        IMAPOLICYPATH="${NEWROOT}${IMAPOLICY_OLD}"
 
     # check the existence of the IMA policy file
     [ -f "${IMAPOLICYPATH}" ] && {
-- 
2.8.3



More information about the systemd-devel mailing list