Blame SOURCES/scap-security-guide-0.1.45-add_rule_dconf_db_up_to_date.patch

0d5c10
From 89f967ca5598cab539fe66560534207b45ff9734 Mon Sep 17 00:00:00 2001
0d5c10
From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= <matyc@redhat.com>
0d5c10
Date: Thu, 30 May 2019 13:22:30 +0200
0d5c10
Subject: [PATCH 1/9] Introduced the "DConf System DBs are in sync with
0d5c10
 keyfiles" rule.
0d5c10
0d5c10
---
0d5c10
 fedora/profiles/ospp.profile                  |  1 +
0d5c10
 .../gnome/dconf_db_up_to_date/bash/shared.sh  |  3 +
0d5c10
 .../gnome/dconf_db_up_to_date/oval/shared.xml | 63 +++++++++++++++++++
0d5c10
 .../gnome/dconf_db_up_to_date/rule.yml        | 30 +++++++++
0d5c10
 rhel7/profiles/ospp.profile                   |  1 +
0d5c10
 shared/references/cce-rhel-avail.txt        |  2 -
0d5c10
 6 files changed, 98 insertions(+), 2 deletions(-)
0d5c10
 create mode 100644 linux_os/guide/system/software/gnome/dconf_db_up_to_date/bash/shared.sh
0d5c10
 create mode 100644 linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
 create mode 100644 linux_os/guide/system/software/gnome/dconf_db_up_to_date/rule.yml
0d5c10
0d5c10
diff --git a/fedora/profiles/ospp.profile b/fedora/profiles/ospp.profile
0d5c10
index b5e8fe097c..92cf738385 100644
0d5c10
--- a/fedora/profiles/ospp.profile
0d5c10
+++ b/fedora/profiles/ospp.profile
0d5c10
@@ -43,6 +43,7 @@ selections:
0d5c10
     - sysctl_kernel_kptr_restrict
0d5c10
     - sysctl_kernel_kexec_load_disabled
0d5c10
     - sysctl_kernel_dmesg_restrict
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_lock_delay
0d5c10
diff --git a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/bash/shared.sh b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/bash/shared.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..db06c9f5aa
0d5c10
--- /dev/null
0d5c10
+++ b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/bash/shared.sh
0d5c10
@@ -0,0 +1,3 @@
0d5c10
+# platform = multi_platform_rhel,multi_platform_fedora,multi_platform_ol
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
new file mode 100644
0d5c10
index 0000000000..b3b5b0358b
0d5c10
--- /dev/null
0d5c10
+++ b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
@@ -0,0 +1,63 @@
0d5c10
+<def-group>
0d5c10
+
0d5c10
+  {{% macro check_db_is_up_to_date(db_name) %}}
0d5c10
+  <unix:file_object id="obj_dconf_{{{ db_name }}}_db" comment="The binary system-wide dconf database with '{{{ db_name }}}' settings" version="1">
0d5c10
+    <unix:filepath>/etc/dconf/db/{{{ db_name }}}</unix:filepath>
0d5c10
+  </unix:file_object>
0d5c10
+
0d5c10
+  <local_variable id="var_dconf_{{{ db_name }}}_db_modified_time" datatype="string" version="1" comment="When the '{{{ db_name }}}' dconf DB has been modified">
0d5c10
+    <time_difference format_2="seconds_since_epoch">
0d5c10
+      <object_component object_ref="obj_dconf_{{{ db_name }}}_db" item_field="m_time"/>
0d5c10
+    </time_difference>
0d5c10
+  </local_variable>
0d5c10
+
0d5c10
+  <unix:file_object id="obj_dconf_{{{ db_name }}}_config" comment="The dconf keyfile with '{{{ db_name }}}' settings" version="1">
0d5c10
+    <unix:path>/etc/dconf/db/{{{ db_name }}}.d/</unix:path>
0d5c10
+    <unix:filename operation="pattern match">.*</unix:filename>
0d5c10
+  </unix:file_object>
0d5c10
+
0d5c10
+  <local_variable id="var_dconf_{{{ db_name }}}_keyfiles_modified_time" datatype="int" version="1" comment="When dconf keyfiles in the '{{{ db_name }}}' tree have been modified">
0d5c10
+    <time_difference format_2="seconds_since_epoch">
0d5c10
+      <object_component object_ref="obj_dconf_{{{ db_name }}}_config" item_field="m_time"/>
0d5c10
+    </time_difference>
0d5c10
+  </local_variable>
0d5c10
+
0d5c10
+  <ind:variable_test check="all" check_existence="all_exist" id="test_dconf_{{{ db_name }}}_up_to_date" version="1" comment="Check if the {{{ db_name }}} dconf DB is up-to-date with keyfiles in the {{{ db_name }}} tree.">
0d5c10
+    <ind:object object_ref="object_{{{ db_name }}}_db_modified_time" />
0d5c10
+    <ind:state state_ref="state_{{{ db_name }}}_db_is_up_to_date" />
0d5c10
+  </ind:variable_test>
0d5c10
+
0d5c10
+  <ind:variable_object comment="All modified times of all keyfiles" id="object_{{{ db_name }}}_db_modified_time" version="1">
0d5c10
+     <ind:var_ref>var_dconf_{{{ db_name }}}_db_modified_time</ind:var_ref>
0d5c10
+   </ind:variable_object>
0d5c10
+
0d5c10
+  
0d5c10
+  <ind:variable_state id="state_{{{ db_name }}}_db_is_up_to_date" version="1">
0d5c10
+    <ind:value datatype="int" operation="less than or equal" var_check="all" var_ref="var_dconf_{{{ db_name }}}_keyfiles_modified_time" />
0d5c10
+  </ind:variable_state>
0d5c10
+  {{% endmacro %}}
0d5c10
+
0d5c10
+  <definition class="compliance" id="dconf_db_up_to_date" version="2">
0d5c10
+    <metadata>
0d5c10
+      <title>Configure the GNOME3 GUI Screen locking</title>
0d5c10
+      <affected family="unix">
0d5c10
+        <platform>Red Hat Enterprise Linux 7</platform>
0d5c10
+        <platform>Red Hat Enterprise Linux 8</platform>
0d5c10
+        <platform>multi_platform_fedora</platform>
0d5c10
+        <platform>multi_platform_ol</platform>
0d5c10
+      </affected>
0d5c10
+      <description>The allowed period of inactivity before the screensaver is activated.</description>
0d5c10
+    </metadata>
0d5c10
+    <criteria operator="OR">
0d5c10
+      <extend_definition comment="dconf installed" definition_ref="package_dconf_installed" negate="true" />
0d5c10
+      <criteria comment="check screensaver idle delay and prevent user from changing it" operator="AND">
0d5c10
+        <criterion comment="local database is up-to-date wrt keyfiles" test_ref="test_dconf_local_up_to_date" />
0d5c10
+        <criterion comment="gdm database is up-to-date wrt keyfiles" test_ref="test_dconf_gdm_up_to_date" />
0d5c10
+      </criteria>
0d5c10
+    </criteria>
0d5c10
+  </definition>
0d5c10
+
0d5c10
+  {{{ check_db_is_up_to_date("local") }}}
0d5c10
+  {{{ check_db_is_up_to_date("gdm") }}}
0d5c10
+
0d5c10
+</def-group>
0d5c10
diff --git a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/rule.yml b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/rule.yml
0d5c10
new file mode 100644
0d5c10
index 0000000000..3017b789f8
0d5c10
--- /dev/null
0d5c10
+++ b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/rule.yml
0d5c10
@@ -0,0 +1,30 @@
0d5c10
+documentation_complete: true
0d5c10
+
0d5c10
+prodtype: rhel7,rhel8,fedora,ol7,ol8
0d5c10
+
0d5c10
+title: 'Make sure that the dconf databases are up-to-date with regards to respective keyfiles'
0d5c10
+
0d5c10
+description: |-
0d5c10
+    By default, DConf uses a binary database as a data backend.
0d5c10
+    The system-level database is compiled from keyfiles in the /etc/dconf/db/ directory by the 
dconf update
command.
0d5c10
+
0d5c10
+rationale: |-
0d5c10
+    Unlike text-based keyfiles, the binary database is impossible to check by OVAL.
0d5c10
+    Therefore, in order to evaluate dconf configuration, both have to be true at the same time -
0d5c10
+    configuration files have to be compliant, and the database needs to be more recent than those keyfiles,
0d5c10
+    which gives confidence that it reflects them.
0d5c10
+
0d5c10
+severity: high
0d5c10
+
0d5c10
+identifiers:
0d5c10
+    cce@rhel8: 81003-6
0d5c10
+    cce@rhel7: 81004-4
0d5c10
+
0d5c10
+ocil_clause: 'The system-wide dconf databases are up-to-date with regards to respective keyfiles'
0d5c10
+
0d5c10
+ocil: |-
0d5c10
+    In order to be sure that the databases are up-to-date, run the
0d5c10
+    
dconf update
0d5c10
+    command as the administrator.
0d5c10
+
0d5c10
+platform: machine
0d5c10
diff --git a/rhel7/profiles/ospp.profile b/rhel7/profiles/ospp.profile
0d5c10
index 36e5d7ee90..d551465f70 100644
0d5c10
--- a/rhel7/profiles/ospp.profile
0d5c10
+++ b/rhel7/profiles/ospp.profile
0d5c10
@@ -401,6 +401,7 @@ selections:
0d5c10
     - network_sniffer_disabled
0d5c10
     - network_ipv6_disable_rpc
0d5c10
     - network_ipv6_privacy_extensions
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_banner_enabled
0d5c10
     - dconf_gnome_disable_automount
0d5c10
     - dconf_gnome_disable_ctrlaltdel_reboot
0d5c10
diff --git a/shared/references/cce-rhel-avail.txt b/shared/references/cce-rhel-avail.txt
0d5c10
index 3cc6d0a916..d6e8161225 100644
0d5c10
--- a/shared/references/cce-rhel-avail.txt
0d5c10
+++ b/shared/references/cce-rhel-avail.txt
0d5c10
@@ -1,5 +1,3 @@
0d5c10
-CCE-81003-6
0d5c10
-CCE-81004-4
0d5c10
 CCE-81005-1
0d5c10
 CCE-81006-9
0d5c10
 CCE-81007-7
0d5c10
0d5c10
From 5a857f490e914078b610eb3d05e390861c30eef4 Mon Sep 17 00:00:00 2001
0d5c10
From: Gabriel Becker <ggasparb@redhat.com>
0d5c10
Date: Wed, 29 May 2019 17:31:02 +0200
0d5c10
Subject: [PATCH 2/9] Add test scenarios for dconf gnome rules.
0d5c10
0d5c10
---
0d5c10
 .../correct_value.pass.sh                     | 18 ++++++++++++++++
0d5c10
 .../wrong_value.fail.sh                       | 18 ++++++++++++++++
0d5c10
 .../correct_value.pass.sh                     | 21 +++++++++++++++++++
0d5c10
 .../wrong_value.fail.sh                       | 21 +++++++++++++++++++
0d5c10
 .../correct_value.pass.sh                     | 18 ++++++++++++++++
0d5c10
 .../wrong_value.fail.sh                       | 18 ++++++++++++++++
0d5c10
 .../correct_value.pass.sh                     | 18 ++++++++++++++++
0d5c10
 .../wrong_value.fail.sh                       | 18 ++++++++++++++++
0d5c10
 .../correct_value.pass.sh                     | 18 ++++++++++++++++
0d5c10
 .../wrong_value.fail.sh                       | 18 ++++++++++++++++
0d5c10
 .../correct_value.pass.sh                     | 18 ++++++++++++++++
0d5c10
 .../wrong_value.fail.sh                       | 18 ++++++++++++++++
0d5c10
 12 files changed, 222 insertions(+)
0d5c10
 create mode 100644 tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/correct_value.pass.sh
0d5c10
 create mode 100644 tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/wrong_value.fail.sh
0d5c10
 create mode 100644 tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/correct_value.pass.sh
0d5c10
 create mode 100644 tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/wrong_value.fail.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/correct_value.pass.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/wrong_value.fail.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/correct_value.pass.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/wrong_value.fail.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/correct_value.pass.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/wrong_value.fail.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/correct_value.pass.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/wrong_value.fail.sh
0d5c10
0d5c10
diff --git a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/correct_value.pass.sh b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/correct_value.pass.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..d6f11373d0
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/correct_value.pass.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../../../group_software/group_gnome/dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enable" "true" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "gdm.d" "00-security-settings"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/wrong_value.fail.sh b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/wrong_value.fail.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..f1e97fea20
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/wrong_value.fail.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../../../group_software/group_gnome/dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enable" "false" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "gdm.d" "00-security-settings"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/correct_value.pass.sh b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/correct_value.pass.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..e161691aa7
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/correct_value.pass.sh
0d5c10
@@ -0,0 +1,21 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../../../group_software/group_gnome/dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+login_banner_text="--[\s\n]+WARNING[\s\n]+--[\s\n]*This[\s\n]+system[\s\n]+is[\s\n]+for[\s\n]+the[\s\n]+use[\s\n]+of[\s\n]+authorized[\s\n]+users[\s\n]+only.[\s\n]+Individuals[\s\n]*using[\s\n]+this[\s\n]+computer[\s\n]+system[\s\n]+without[\s\n]+authority[\s\n]+or[\s\n]+in[\s\n]+excess[\s\n]+of[\s\n]+their[\s\n]*authority[\s\n]+are[\s\n]+subject[\s\n]+to[\s\n]+having[\s\n]+all[\s\n]+their[\s\n]+activities[\s\n]+on[\s\n]+this[\s\n]+system[\s\n]*monitored[\s\n]+and[\s\n]+recorded[\s\n]+by[\s\n]+system[\s\n]+personnel.[\s\n]+Anyone[\s\n]+using[\s\n]+this[\s\n]*system[\s\n]+expressly[\s\n]+consents[\s\n]+to[\s\n]+such[\s\n]+monitoring[\s\n]+and[\s\n]+is[\s\n]+advised[\s\n]+that[\s\n]*if[\s\n]+such[\s\n]+monitoring[\s\n]+reveals[\s\n]+possible[\s\n]+evidence[\s\n]+of[\s\n]+criminal[\s\n]+activity[\s\n]*system[\s\n]+personal[\s\n]+may[\s\n]+provide[\s\n]+the[\s\n]+evidence[\s\n]+of[\s\n]+such[\s\n]+monitoring[\s\n]+to[\s\n]+law[\s\n]*enforcement[\s\n]+officials."
0d5c10
+expanded=$(echo "$login_banner_text" | sed 's/(\\\\\x27)\*/\\\x27/g;s/(\\\x27)\*//g;s/(\\\\\x27)/tamere/g;s/(\^\(.*\)\$|.*$/\1/g;s/\[\\s\\n\][+*]/ /g;s/\\//g;s/(n)\*/\\n/g;s/\x27/\\\x27/g;')
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-text" "'${expanded}''" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-text" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/wrong_value.fail.sh b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/wrong_value.fail.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..b45c5b193f
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/wrong_value.fail.sh
0d5c10
@@ -0,0 +1,21 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../../../group_software/group_gnome/dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+login_banner_text="Wrong Banner Text"
0d5c10
+expanded=$(echo "$login_banner_text" | sed 's/(\\\\\x27)\*/\\\x27/g;s/(\\\x27)\*//g;s/(\\\\\x27)/tamere/g;s/(\^\(.*\)\$|.*$/\1/g;s/\[\\s\\n\][+*]/ /g;s/\\//g;s/(n)\*/\\n/g;s/\x27/\\\x27/g;')
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-text" "'${expanded}'" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-text" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/correct_value.pass.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/correct_value.pass.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..a5a207b80a
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/correct_value.pass.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "disable-restart-buttons" "true" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "disable-restart-buttons" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/wrong_value.fail.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/wrong_value.fail.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..04d3e9eca2
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/wrong_value.fail.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "disable-restart-buttons" "false" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "disable-restart-buttons" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/correct_value.pass.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/correct_value.pass.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..9a3d60d9f6
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/correct_value.pass.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "disable-user-list" "true" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "disable-user-list" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/wrong_value.fail.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/wrong_value.fail.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..11e3cbfa9b
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/wrong_value.fail.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "disable-user-list" "false" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "disable-user-list" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/correct_value.pass.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/correct_value.pass.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..58703799f6
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/correct_value.pass.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "enable-smartcard-authentication" "true" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "enable-smartcard-authentication" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/wrong_value.fail.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/wrong_value.fail.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..18f89c182e
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/wrong_value.fail.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "enable-smartcard-authentication" "false" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "enable-smartcard-authentication" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/correct_value.pass.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/correct_value.pass.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..0cc2a80762
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/correct_value.pass.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "allowed-failures" "3" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "allowed-failures" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/wrong_value.fail.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/wrong_value.fail.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..f89a9d74b9
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/wrong_value.fail.sh
0d5c10
@@ -0,0 +1,18 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "allowed-failures" "99" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "allowed-failures" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
0d5c10
From d2facf408c5f011449539fc3edeaed90a72af04d Mon Sep 17 00:00:00 2001
0d5c10
From: Gabriel Becker <ggasparb@redhat.com>
0d5c10
Date: Thu, 30 May 2019 15:39:36 +0200
0d5c10
Subject: [PATCH 3/9] Add test scenarios for dconf_db_up_to_date.
0d5c10
0d5c10
---
0d5c10
 .../group_gnome/dconf_test_functions.sh       |  7 ++++-
0d5c10
 .../db_not_up_to_date.fail.sh                 | 26 +++++++++++++++++++
0d5c10
 .../db_up_to_date.pass.sh                     | 21 +++++++++++++++
0d5c10
 .../no_db_files.fail.sh                       | 23 ++++++++++++++++
0d5c10
 4 files changed, 76 insertions(+), 1 deletion(-)
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_not_up_to_date.fail.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_up_to_date.pass.sh
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_db_files.fail.sh
0d5c10
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/dconf_test_functions.sh b/tests/data/group_system/group_software/group_gnome/dconf_test_functions.sh
0d5c10
index 07940ea272..d975ea0715 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/dconf_test_functions.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/dconf_test_functions.sh
0d5c10
@@ -4,6 +4,11 @@ clean_dconf_settings(){
0d5c10
 	rm -rf /etc/dconf/db/*
0d5c10
 }
0d5c10
 
0d5c10
+# Wipes out dconf db files
0d5c10
+remove_dconf_databases(){
0d5c10
+	rm -f /etc/dconf/db/*
0d5c10
+}
0d5c10
+
0d5c10
 # Adds a new dconf setting
0d5c10
 # $1 _path
0d5c10
 # $2 _setting
0d5c10
@@ -12,7 +17,7 @@ clean_dconf_settings(){
0d5c10
 # $5 _settingFile
0d5c10
 add_dconf_setting() {
0d5c10
 	local _path=$1 _setting=$2 _value=$3 _db=$4 _settingFile=$5
0d5c10
-	mkdir /etc/dconf/db/${_db}
0d5c10
+	mkdir -p /etc/dconf/db/${_db} || true
0d5c10
 	echo "[${_path}]" > /etc/dconf/db/${_db}/${_settingFile}
0d5c10
 	echo "${_setting}=${_value}" >> /etc/dconf/db/${_db}/${_settingFile}
0d5c10
 }
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_not_up_to_date.fail.sh b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_not_up_to_date.fail.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..bb8b1d42ff
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_not_up_to_date.fail.sh
0d5c10
@@ -0,0 +1,26 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "local.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "local.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
+
0d5c10
+sleep 3
0d5c10
+
0d5c10
+# make static files newer than the database
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_up_to_date.pass.sh b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_up_to_date.pass.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..66ed76e4fa
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_up_to_date.pass.sh
0d5c10
@@ -0,0 +1,21 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+clean_dconf_settings
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "local.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "local.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+dconf update
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_db_files.fail.sh b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_db_files.fail.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..a7bc04efac
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_db_files.fail.sh
0d5c10
@@ -0,0 +1,23 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../dconf_test_functions.sh
0d5c10
+
0d5c10
+if ! rpm -q dconf; then
0d5c10
+    yum -y install dconf
0d5c10
+fi
0d5c10
+
0d5c10
+if ! rpm -q gdm; then
0d5c10
+    yum -y install gdm
0d5c10
+fi
0d5c10
+
0d5c10
+# remove all database files
0d5c10
+remove_dconf_databases
0d5c10
+
0d5c10
+sleep 3
0d5c10
+
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "gdm.d" "00-security-settings-lock"
0d5c10
+
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "local.d" "00-security-settings"
0d5c10
+add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "local.d" "00-security-settings-lock"
0d5c10
0d5c10
From d57e981a45e88a9e28b621ed5d9cbf64c17f3592 Mon Sep 17 00:00:00 2001
0d5c10
From: Gabriel Becker <ggasparb@redhat.com>
0d5c10
Date: Thu, 30 May 2019 16:45:35 +0200
0d5c10
Subject: [PATCH 4/9] Add dconf_db_up_to_date to profiles which use gnome
0d5c10
 config.
0d5c10
0d5c10
---
0d5c10
 fedora/profiles/pci-dss.profile | 1 +
0d5c10
 ol7/profiles/pci-dss.profile    | 1 +
0d5c10
 ol7/profiles/stig-ol7-disa.profile       | 1 +
0d5c10
 ol8/profiles/ospp.profile       | 1 +
0d5c10
 ol8/profiles/pci-dss.profile    | 1 +
0d5c10
 rhel7/profiles/C2S.profile      | 1 +
0d5c10
 rhel7/profiles/hipaa.profile    | 1 +
0d5c10
 rhel7/profiles/ospp42.profile   | 1 +
0d5c10
 rhel7/profiles/pci-dss.profile  | 1 +
0d5c10
 rhel7/profiles/stig-rhel7-disa.profile     | 1 +
0d5c10
 rhel8/profiles/cjis.profile     | 1 +
0d5c10
 rhel8/profiles/hipaa.profile    | 1 +
0d5c10
 rhel8/profiles/ospp.profile     | 1 +
0d5c10
 rhel8/profiles/pci-dss.profile  | 1 +
0d5c10
 14 files changed, 14 insertions(+)
0d5c10
0d5c10
diff --git a/fedora/profiles/pci-dss.profile b/fedora/profiles/pci-dss.profile
0d5c10
index 5e47534e81..dea9efe685 100644
0d5c10
--- a/fedora/profiles/pci-dss.profile
0d5c10
+++ b/fedora/profiles/pci-dss.profile
0d5c10
@@ -98,6 +98,7 @@ selections:
0d5c10
     - account_disable_post_pw_expiration
0d5c10
     - accounts_passwords_pam_faillock_deny
0d5c10
     - accounts_passwords_pam_faillock_unlock_time
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_lock_enabled
0d5c10
diff --git a/ol7/profiles/pci-dss.profile b/ol7/profiles/pci-dss.profile
0d5c10
index 1648129066..01fcda6031 100644
0d5c10
--- a/ol7/profiles/pci-dss.profile
0d5c10
+++ b/ol7/profiles/pci-dss.profile
0d5c10
@@ -121,6 +121,7 @@ selections:
0d5c10
     - accounts_passwords_pam_faillock_deny
0d5c10
     - accounts_passwords_pam_faillock_unlock_time
0d5c10
     - account_unique_name
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_lock_enabled
0d5c10
diff --git a/ol7/profiles/stig-ol7-disa.profile b/ol7/profiles/stig-ol7-disa.profile
0d5c10
index f9d2f4c900..9ae23a41be 100644
0d5c10
--- a/ol7/profiles/stig-ol7-disa.profile
0d5c10
+++ b/ol7/profiles/stig-ol7-disa.profile
0d5c10
@@ -109,6 +109,7 @@ selections:
0d5c10
     - audit_rules_usergroup_modification_opasswd
0d5c10
     - audit_rules_usergroup_modification_passwd
0d5c10
     - audit_rules_usergroup_modification_shadow
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_idle_activation_locked
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
diff --git a/ol8/profiles/ospp.profile b/ol8/profiles/ospp.profile
0d5c10
index 5c13575f72..8506713cc1 100644
0d5c10
--- a/ol8/profiles/ospp.profile
0d5c10
+++ b/ol8/profiles/ospp.profile
0d5c10
@@ -42,6 +42,7 @@ selections:
0d5c10
     - sysctl_kernel_kptr_restrict
0d5c10
     - sysctl_kernel_kexec_load_disabled
0d5c10
     - sysctl_kernel_dmesg_restrict
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_lock_delay
0d5c10
diff --git a/ol8/profiles/pci-dss.profile b/ol8/profiles/pci-dss.profile
0d5c10
index 6920cf9b7d..237757c523 100644
0d5c10
--- a/ol8/profiles/pci-dss.profile
0d5c10
+++ b/ol8/profiles/pci-dss.profile
0d5c10
@@ -126,6 +126,7 @@ selections:
0d5c10
     - accounts_passwords_pam_faillock_deny
0d5c10
     - accounts_passwords_pam_faillock_unlock_time
0d5c10
     - account_unique_name
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_lock_enabled
0d5c10
diff --git a/rhel7/profiles/C2S.profile b/rhel7/profiles/C2S.profile
0d5c10
index 65805957af..031b0247df 100644
0d5c10
--- a/rhel7/profiles/C2S.profile
0d5c10
+++ b/rhel7/profiles/C2S.profile
0d5c10
@@ -70,6 +70,7 @@ selections:
0d5c10
     - selinux_confinement_of_daemons
0d5c10
     - banner_etc_issue
0d5c10
     - login_banner_text=usgcb_default
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_login_banner_text
0d5c10
     - dconf_gnome_banner_enabled
0d5c10
     - security_patches_up_to_date
0d5c10
diff --git a/rhel7/profiles/hipaa.profile b/rhel7/profiles/hipaa.profile
0d5c10
index 76fb4a8269..a58f625309 100644
0d5c10
--- a/rhel7/profiles/hipaa.profile
0d5c10
+++ b/rhel7/profiles/hipaa.profile
0d5c10
@@ -28,6 +28,7 @@ selections:
0d5c10
     - service_debug-shell_disabled
0d5c10
     - disable_ctrlaltdel_reboot
0d5c10
     - disable_ctrlaltdel_burstaction
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_remote_access_credential_prompt
0d5c10
     - dconf_gnome_remote_access_encryption
0d5c10
     - sshd_disable_empty_passwords
0d5c10
diff --git a/rhel7/profiles/ospp42.profile b/rhel7/profiles/ospp42.profile
0d5c10
index de4827afaf..3f59466477 100644
0d5c10
--- a/rhel7/profiles/ospp42.profile
0d5c10
+++ b/rhel7/profiles/ospp42.profile
0d5c10
@@ -42,6 +42,7 @@ selections:
0d5c10
     - sysctl_kernel_kptr_restrict
0d5c10
     - sysctl_kernel_kexec_load_disabled
0d5c10
     - sysctl_kernel_dmesg_restrict
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_lock_delay
0d5c10
diff --git a/rhel7/profiles/pci-dss.profile b/rhel7/profiles/pci-dss.profile
0d5c10
index b4e4786ce9..0d9a51c42b 100644
0d5c10
--- a/rhel7/profiles/pci-dss.profile
0d5c10
+++ b/rhel7/profiles/pci-dss.profile
0d5c10
@@ -79,6 +79,7 @@ selections:
0d5c10
     - account_disable_post_pw_expiration
0d5c10
     - accounts_passwords_pam_faillock_deny
0d5c10
     - accounts_passwords_pam_faillock_unlock_time
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_lock_enabled
0d5c10
diff --git a/rhel7/profiles/stig-rhel7-disa.profile b/rhel7/profiles/stig-rhel7-disa.profile
0d5c10
index 4edae36b0c..1d558f0068 100644
0d5c10
--- a/rhel7/profiles/stig-rhel7-disa.profile
0d5c10
+++ b/rhel7/profiles/stig-rhel7-disa.profile
0d5c10
@@ -57,6 +57,7 @@ selections:
0d5c10
     - rpm_verify_permissions
0d5c10
     - rpm_verify_ownership
0d5c10
     - rpm_verify_hashes
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_banner_enabled
0d5c10
     - dconf_gnome_login_banner_text
0d5c10
     - banner_etc_issue
0d5c10
diff --git a/rhel8/profiles/cjis.profile b/rhel8/profiles/cjis.profile
0d5c10
index ec225d89a4..8d173d257f 100644
0d5c10
--- a/rhel8/profiles/cjis.profile
0d5c10
+++ b/rhel8/profiles/cjis.profile
0d5c10
@@ -86,6 +86,7 @@ selections:
0d5c10
     - var_password_pam_retry=5
0d5c10
     - var_accounts_passwords_pam_faillock_deny=5
0d5c10
     - var_accounts_passwords_pam_faillock_unlock_time=600
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_lock_enabled
0d5c10
diff --git a/rhel8/profiles/hipaa.profile b/rhel8/profiles/hipaa.profile
0d5c10
index d44960d84c..3debc739fc 100644
0d5c10
--- a/rhel8/profiles/hipaa.profile
0d5c10
+++ b/rhel8/profiles/hipaa.profile
0d5c10
@@ -28,6 +28,7 @@ selections:
0d5c10
     - service_debug-shell_disabled
0d5c10
     - disable_ctrlaltdel_reboot
0d5c10
     - disable_ctrlaltdel_burstaction
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_remote_access_credential_prompt
0d5c10
     - dconf_gnome_remote_access_encryption
0d5c10
     - sshd_disable_empty_passwords
0d5c10
diff --git a/rhel8/profiles/ospp.profile b/rhel8/profiles/ospp.profile
0d5c10
index f9f7cd04dc..c5a7ee5ed5 100644
0d5c10
--- a/rhel8/profiles/ospp.profile
0d5c10
+++ b/rhel8/profiles/ospp.profile
0d5c10
@@ -219,6 +219,7 @@ selections:
0d5c10
     ### FMT_MOF_EXT.1 / AC-11(a)
0d5c10
     ### Enable Screen Lock
0d5c10
     - package_tmux_installed
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_lock_delay
0d5c10
diff --git a/rhel8/profiles/pci-dss.profile b/rhel8/profiles/pci-dss.profile
0d5c10
index bdca65b4fa..89abad1338 100644
0d5c10
--- a/rhel8/profiles/pci-dss.profile
0d5c10
+++ b/rhel8/profiles/pci-dss.profile
0d5c10
@@ -98,6 +98,7 @@ selections:
0d5c10
     - account_disable_post_pw_expiration
0d5c10
     - accounts_passwords_pam_faillock_deny
0d5c10
     - accounts_passwords_pam_faillock_unlock_time
0d5c10
+    - dconf_db_up_to_date
0d5c10
     - dconf_gnome_screensaver_idle_delay
0d5c10
     - dconf_gnome_screensaver_idle_activation_enabled
0d5c10
     - dconf_gnome_screensaver_lock_enabled
0d5c10
0d5c10
From 42cb1e23c1c39dd19d99628d133fae60b06f078c Mon Sep 17 00:00:00 2001
0d5c10
From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= <matyc@redhat.com>
0d5c10
Date: Thu, 30 May 2019 17:26:11 +0200
0d5c10
Subject: [PATCH 5/9] Added an OVAL customization for Fedora
0d5c10
 (dconf_db_up_to_date).
0d5c10
0d5c10
---
0d5c10
 .../gnome/dconf_db_up_to_date/oval/shared.xml    | 16 ++++++++++++----
0d5c10
 1 file changed, 12 insertions(+), 4 deletions(-)
0d5c10
0d5c10
diff --git a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
index b3b5b0358b..6b34446487 100644
0d5c10
--- a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
+++ b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
@@ -37,6 +37,10 @@
0d5c10
   </ind:variable_state>
0d5c10
   {{% endmacro %}}
0d5c10
 
0d5c10
+  {{% macro check_db_criterion(db_name) %}}
0d5c10
+      <criterion comment="{{{ db_name }}} database is up-to-date wrt keyfiles" test_ref="test_dconf_{{{ db_name }}}_up_to_date" />
0d5c10
+  {{% endmacro %}}
0d5c10
+
0d5c10
   <definition class="compliance" id="dconf_db_up_to_date" version="2">
0d5c10
     <metadata>
0d5c10
       <title>Configure the GNOME3 GUI Screen locking</title>
0d5c10
@@ -50,14 +54,18 @@
0d5c10
     </metadata>
0d5c10
     <criteria operator="OR">
0d5c10
       <extend_definition comment="dconf installed" definition_ref="package_dconf_installed" negate="true" />
0d5c10
-      <criteria comment="check screensaver idle delay and prevent user from changing it" operator="AND">
0d5c10
-        <criterion comment="local database is up-to-date wrt keyfiles" test_ref="test_dconf_local_up_to_date" />
0d5c10
-        <criterion comment="gdm database is up-to-date wrt keyfiles" test_ref="test_dconf_gdm_up_to_date" />
0d5c10
+      <criteria comment="check that all DBs in question are up-to-date" operator="AND">
0d5c10
+        {{% if product != 'fedora' %}}
0d5c10
+          {{{ check_db_criterion("gdm") }}}
0d5c10
+        {{% endif %}}
0d5c10
+        {{{ check_db_criterion("local") }}}
0d5c10
       </criteria>
0d5c10
     </criteria>
0d5c10
   </definition>
0d5c10
 
0d5c10
+  {{% if product != 'fedora' %}}
0d5c10
+    {{{ check_db_is_up_to_date("gdm") }}}
0d5c10
+  {{% endif %}}
0d5c10
   {{{ check_db_is_up_to_date("local") }}}
0d5c10
-  {{{ check_db_is_up_to_date("gdm") }}}
0d5c10
 
0d5c10
 </def-group>
0d5c10
0d5c10
From 758e239c798620038216c554a05cba9bd95a93c1 Mon Sep 17 00:00:00 2001
0d5c10
From: Gabriel Becker <ggasparb@redhat.com>
0d5c10
Date: Thu, 30 May 2019 17:37:36 +0200
0d5c10
Subject: [PATCH 6/9] Create helper function to install gdm and dconf to be
0d5c10
 used within test scenarios.
0d5c10
0d5c10
Fix test scenario when dconf db is not up to date.
0d5c10
---
0d5c10
 .../correct_value.pass.sh                          |  8 +-------
0d5c10
 .../wrong_value.fail.sh                            |  8 +-------
0d5c10
 .../correct_value.pass.sh                          |  8 +-------
0d5c10
 .../wrong_value.fail.sh                            |  8 +-------
0d5c10
 .../group_gnome/dconf_test_functions.sh            | 11 +++++++++++
0d5c10
 .../correct_value.pass.sh                          |  8 +-------
0d5c10
 .../wrong_value.fail.sh                            |  8 +-------
0d5c10
 .../correct_value.pass.sh                          |  8 +-------
0d5c10
 .../wrong_value.fail.sh                            |  8 +-------
0d5c10
 .../correct_value.pass.sh                          |  8 +-------
0d5c10
 .../wrong_value.fail.sh                            |  8 +-------
0d5c10
 .../correct_value.pass.sh                          |  8 +-------
0d5c10
 .../wrong_value.fail.sh                            |  8 +-------
0d5c10
 .../db_not_up_to_date.fail.sh                      | 14 +++++---------
0d5c10
 .../rule_dconf_db_up_to_date/db_up_to_date.pass.sh |  8 +-------
0d5c10
 .../rule_dconf_db_up_to_date/no_db_files.fail.sh   | 11 +++--------
0d5c10
 16 files changed, 32 insertions(+), 108 deletions(-)
0d5c10
0d5c10
diff --git a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/correct_value.pass.sh b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/correct_value.pass.sh
0d5c10
index d6f11373d0..285c9474d4 100644
0d5c10
--- a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/correct_value.pass.sh
0d5c10
+++ b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/correct_value.pass.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../../../group_software/group_gnome/dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "banner-message-enable" "true" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/wrong_value.fail.sh b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/wrong_value.fail.sh
0d5c10
index f1e97fea20..9408a5c3bb 100644
0d5c10
--- a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/wrong_value.fail.sh
0d5c10
+++ b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_banner_enabled/wrong_value.fail.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../../../group_software/group_gnome/dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "banner-message-enable" "false" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/correct_value.pass.sh b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/correct_value.pass.sh
0d5c10
index e161691aa7..c39f919959 100644
0d5c10
--- a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/correct_value.pass.sh
0d5c10
+++ b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/correct_value.pass.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../../../group_software/group_gnome/dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 login_banner_text="--[\s\n]+WARNING[\s\n]+--[\s\n]*This[\s\n]+system[\s\n]+is[\s\n]+for[\s\n]+the[\s\n]+use[\s\n]+of[\s\n]+authorized[\s\n]+users[\s\n]+only.[\s\n]+Individuals[\s\n]*using[\s\n]+this[\s\n]+computer[\s\n]+system[\s\n]+without[\s\n]+authority[\s\n]+or[\s\n]+in[\s\n]+excess[\s\n]+of[\s\n]+their[\s\n]*authority[\s\n]+are[\s\n]+subject[\s\n]+to[\s\n]+having[\s\n]+all[\s\n]+their[\s\n]+activities[\s\n]+on[\s\n]+this[\s\n]+system[\s\n]*monitored[\s\n]+and[\s\n]+recorded[\s\n]+by[\s\n]+system[\s\n]+personnel.[\s\n]+Anyone[\s\n]+using[\s\n]+this[\s\n]*system[\s\n]+expressly[\s\n]+consents[\s\n]+to[\s\n]+such[\s\n]+monitoring[\s\n]+and[\s\n]+is[\s\n]+advised[\s\n]+that[\s\n]*if[\s\n]+such[\s\n]+monitoring[\s\n]+reveals[\s\n]+possible[\s\n]+evidence[\s\n]+of[\s\n]+criminal[\s\n]+activity[\s\n]*system[\s\n]+personal[\s\n]+may[\s\n]+provide[\s\n]+the[\s\n]+evidence[\s\n]+of[\s\n]+such[\s\n]+monitoring[\s\n]+to[\s\n]+law[\s\n]*enforcement[\s\n]+officials."
0d5c10
 expanded=$(echo "$login_banner_text" | sed 's/(\\\\\x27)\*/\\\x27/g;s/(\\\x27)\*//g;s/(\\\\\x27)/tamere/g;s/(\^\(.*\)\$|.*$/\1/g;s/\[\\s\\n\][+*]/ /g;s/\\//g;s/(n)\*/\\n/g;s/\x27/\\\x27/g;')
0d5c10
diff --git a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/wrong_value.fail.sh b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/wrong_value.fail.sh
0d5c10
index b45c5b193f..b9e7fc8661 100644
0d5c10
--- a/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/wrong_value.fail.sh
0d5c10
+++ b/tests/data/group_system/group_accounts/group_accounts-banners/group_gui_login_banner/rule_dconf_gnome_login_banner_text/wrong_value.fail.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../../../group_software/group_gnome/dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 login_banner_text="Wrong Banner Text"
0d5c10
 expanded=$(echo "$login_banner_text" | sed 's/(\\\\\x27)\*/\\\x27/g;s/(\\\x27)\*//g;s/(\\\\\x27)/tamere/g;s/(\^\(.*\)\$|.*$/\1/g;s/\[\\s\\n\][+*]/ /g;s/\\//g;s/(n)\*/\\n/g;s/\x27/\\\x27/g;')
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/dconf_test_functions.sh b/tests/data/group_system/group_software/group_gnome/dconf_test_functions.sh
0d5c10
index d975ea0715..a218f1f8e7 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/dconf_test_functions.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/dconf_test_functions.sh
0d5c10
@@ -1,4 +1,15 @@
0d5c10
 
0d5c10
+# Check if gdm and dconf are installed, if not then install them
0d5c10
+install_dconf_and_gdm_if_needed(){
0d5c10
+	if ! rpm -q dconf; then
0d5c10
+		yum -y install dconf
0d5c10
+	fi
0d5c10
+
0d5c10
+	if ! rpm -q gdm; then
0d5c10
+		yum -y install gdm
0d5c10
+	fi
0d5c10
+}
0d5c10
+
0d5c10
 # Wipes out dconf db settings directory
0d5c10
 clean_dconf_settings(){
0d5c10
 	rm -rf /etc/dconf/db/*
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/correct_value.pass.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/correct_value.pass.sh
0d5c10
index a5a207b80a..9aea0b74cf 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/correct_value.pass.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/correct_value.pass.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "disable-restart-buttons" "true" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/wrong_value.fail.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/wrong_value.fail.sh
0d5c10
index 04d3e9eca2..d8c571fc0a 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/wrong_value.fail.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_restart_shutdown/wrong_value.fail.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "disable-restart-buttons" "false" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/correct_value.pass.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/correct_value.pass.sh
0d5c10
index 9a3d60d9f6..776f9e7c23 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/correct_value.pass.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/correct_value.pass.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "disable-user-list" "true" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/wrong_value.fail.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/wrong_value.fail.sh
0d5c10
index 11e3cbfa9b..571bd75f22 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/wrong_value.fail.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_disable_user_list/wrong_value.fail.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "disable-user-list" "false" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/correct_value.pass.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/correct_value.pass.sh
0d5c10
index 58703799f6..13562cfa1d 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/correct_value.pass.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/correct_value.pass.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "enable-smartcard-authentication" "true" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/wrong_value.fail.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/wrong_value.fail.sh
0d5c10
index 18f89c182e..666ce2c21c 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/wrong_value.fail.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_enable_smartcard_auth/wrong_value.fail.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "enable-smartcard-authentication" "false" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/correct_value.pass.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/correct_value.pass.sh
0d5c10
index 0cc2a80762..59d005967a 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/correct_value.pass.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/correct_value.pass.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "allowed-failures" "3" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/wrong_value.fail.sh b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/wrong_value.fail.sh
0d5c10
index f89a9d74b9..c6d31f5b8a 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/wrong_value.fail.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/group_gnome_login_screen/rule_dconf_gnome_login_retries/wrong_value.fail.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "allowed-failures" "99" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_not_up_to_date.fail.sh b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_not_up_to_date.fail.sh
0d5c10
index bb8b1d42ff..db6e7138aa 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_not_up_to_date.fail.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_not_up_to_date.fail.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "gdm.d" "00-security-settings"
0d5c10
@@ -20,7 +14,9 @@ add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "local.d" "00-se
0d5c10
 
0d5c10
 dconf update
0d5c10
 
0d5c10
-sleep 3
0d5c10
+# ensure that the modification happens a reasonable amount of time after running dconf update
0d5c10
+sleep 5
0d5c10
 
0d5c10
-# make static files newer than the database
0d5c10
+# make static keyfiles newer than the database
0d5c10
 add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "gdm.d" "00-security-settings"
0d5c10
+add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "local.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_up_to_date.pass.sh b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_up_to_date.pass.sh
0d5c10
index 66ed76e4fa..5a6c2f0a43 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_up_to_date.pass.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/db_up_to_date.pass.sh
0d5c10
@@ -3,13 +3,7 @@
0d5c10
 
0d5c10
 . ../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 clean_dconf_settings
0d5c10
 add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "gdm.d" "00-security-settings"
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_db_files.fail.sh b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_db_files.fail.sh
0d5c10
index a7bc04efac..3fdbed905e 100644
0d5c10
--- a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_db_files.fail.sh
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_db_files.fail.sh
0d5c10
@@ -3,18 +3,13 @@
0d5c10
 
0d5c10
 . ../dconf_test_functions.sh
0d5c10
 
0d5c10
-if ! rpm -q dconf; then
0d5c10
-    yum -y install dconf
0d5c10
-fi
0d5c10
-
0d5c10
-if ! rpm -q gdm; then
0d5c10
-    yum -y install gdm
0d5c10
-fi
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
 
0d5c10
 # remove all database files
0d5c10
 remove_dconf_databases
0d5c10
 
0d5c10
-sleep 3
0d5c10
+# ensure that the modification happens a reasonable amount of time after running dconf update
0d5c10
+sleep 5
0d5c10
 
0d5c10
 add_dconf_setting "org/gnome/login-screen" "banner-message-enabled" "true" "gdm.d" "00-security-settings"
0d5c10
 add_dconf_lock "org/gnome/login-screen" "banner-message-enable" "gdm.d" "00-security-settings-lock"
0d5c10
0d5c10
From 68e3f056a723ceb170fd81105d354e390e3ea00a Mon Sep 17 00:00:00 2001
0d5c10
From: Gabriel Becker <ggasparb@redhat.com>
0d5c10
Date: Fri, 31 May 2019 10:06:03 +0200
0d5c10
Subject: [PATCH 7/9] Update dconf_db_up_to_date OVAL metadata.
0d5c10
0d5c10
---
0d5c10
 .../system/software/gnome/dconf_db_up_to_date/oval/shared.xml | 4 ++--
0d5c10
 1 file changed, 2 insertions(+), 2 deletions(-)
0d5c10
0d5c10
diff --git a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
index 6b34446487..499bb4db60 100644
0d5c10
--- a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
+++ b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
@@ -43,14 +43,14 @@
0d5c10
 
0d5c10
   <definition class="compliance" id="dconf_db_up_to_date" version="2">
0d5c10
     <metadata>
0d5c10
-      <title>Configure the GNOME3 GUI Screen locking</title>
0d5c10
+      <title>The dconf databases are up-to-date.</title>
0d5c10
       <affected family="unix">
0d5c10
         <platform>Red Hat Enterprise Linux 7</platform>
0d5c10
         <platform>Red Hat Enterprise Linux 8</platform>
0d5c10
         <platform>multi_platform_fedora</platform>
0d5c10
         <platform>multi_platform_ol</platform>
0d5c10
       </affected>
0d5c10
-      <description>The allowed period of inactivity before the screensaver is activated.</description>
0d5c10
+      <description>Make sure that the dconf databases are up-to-date with regards to respective keyfiles.</description>
0d5c10
     </metadata>
0d5c10
     <criteria operator="OR">
0d5c10
       <extend_definition comment="dconf installed" definition_ref="package_dconf_installed" negate="true" />
0d5c10
0d5c10
From f86c4b314cc7d4d3922cf424a77674f9332eced9 Mon Sep 17 00:00:00 2001
0d5c10
From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= <matyc@redhat.com>
0d5c10
Date: Fri, 31 May 2019 15:59:11 +0200
0d5c10
Subject: [PATCH 8/9] Made the gdm.d keyfile tree relevant only for RHEL7.
0d5c10
0d5c10
---
0d5c10
 .../system/software/gnome/dconf_db_up_to_date/oval/shared.xml | 4 ++--
0d5c10
 1 file changed, 2 insertions(+), 2 deletions(-)
0d5c10
0d5c10
diff --git a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
index 499bb4db60..bc31a6cb7e 100644
0d5c10
--- a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
+++ b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
@@ -55,7 +55,7 @@
0d5c10
     <criteria operator="OR">
0d5c10
       <extend_definition comment="dconf installed" definition_ref="package_dconf_installed" negate="true" />
0d5c10
       <criteria comment="check that all DBs in question are up-to-date" operator="AND">
0d5c10
-        {{% if product != 'fedora' %}}
0d5c10
+        {{% if product == 'rhel7' %}}
0d5c10
           {{{ check_db_criterion("gdm") }}}
0d5c10
         {{% endif %}}
0d5c10
         {{{ check_db_criterion("local") }}}
0d5c10
@@ -63,7 +63,7 @@
0d5c10
     </criteria>
0d5c10
   </definition>
0d5c10
 
0d5c10
-  {{% if product != 'fedora' %}}
0d5c10
+  {{% if product == 'rhel7' %}}
0d5c10
     {{{ check_db_is_up_to_date("gdm") }}}
0d5c10
   {{% endif %}}
0d5c10
   {{{ check_db_is_up_to_date("local") }}}
0d5c10
0d5c10
From 64a53ece4ffea9f9d4017955433a251493649175 Mon Sep 17 00:00:00 2001
0d5c10
From: =?UTF-8?q?Mat=C4=9Bj=20T=C3=BD=C4=8D?= <matyc@redhat.com>
0d5c10
Date: Mon, 3 Jun 2019 14:39:09 +0200
0d5c10
Subject: [PATCH 9/9] Added support for missing keyfiles.
0d5c10
0d5c10
---
0d5c10
 .../gnome/dconf_db_up_to_date/oval/shared.xml        | 12 +++++++++---
0d5c10
 .../rule_dconf_db_up_to_date/no_keyfiles.pass.sh     |  8 ++++++++
0d5c10
 2 files changed, 17 insertions(+), 3 deletions(-)
0d5c10
 create mode 100644 tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_keyfiles.pass.sh
0d5c10
0d5c10
diff --git a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
index bc31a6cb7e..f073268762 100644
0d5c10
--- a/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
+++ b/linux_os/guide/system/software/gnome/dconf_db_up_to_date/oval/shared.xml
0d5c10
@@ -12,8 +12,7 @@
0d5c10
   </local_variable>
0d5c10
 
0d5c10
   <unix:file_object id="obj_dconf_{{{ db_name }}}_config" comment="The dconf keyfile with '{{{ db_name }}}' settings" version="1">
0d5c10
-    <unix:path>/etc/dconf/db/{{{ db_name }}}.d/</unix:path>
0d5c10
-    <unix:filename operation="pattern match">.*</unix:filename>
0d5c10
+    <unix:filepath operation="pattern match">^/etc/dconf/db/{{{ db_name }}}.d/.*</unix:filepath>
0d5c10
   </unix:file_object>
0d5c10
 
0d5c10
   <local_variable id="var_dconf_{{{ db_name }}}_keyfiles_modified_time" datatype="int" version="1" comment="When dconf keyfiles in the '{{{ db_name }}}' tree have been modified">
0d5c10
@@ -35,10 +34,17 @@
0d5c10
   <ind:variable_state id="state_{{{ db_name }}}_db_is_up_to_date" version="1">
0d5c10
     <ind:value datatype="int" operation="less than or equal" var_check="all" var_ref="var_dconf_{{{ db_name }}}_keyfiles_modified_time" />
0d5c10
   </ind:variable_state>
0d5c10
+
0d5c10
+  <unix:file_test id="test_dconf_{{{ db_name }}}_no_keyfiles" check="all" check_existence="none_exist" comment="no keyfiles applicable to the {{{ db_name }}} database" version="1">
0d5c10
+    <unix:object object_ref="obj_dconf_{{{ db_name }}}_config" />
0d5c10
+  </unix:file_test>
0d5c10
   {{% endmacro %}}
0d5c10
 
0d5c10
   {{% macro check_db_criterion(db_name) %}}
0d5c10
-      <criterion comment="{{{ db_name }}} database is up-to-date wrt keyfiles" test_ref="test_dconf_{{{ db_name }}}_up_to_date" />
0d5c10
+      <criteria comment="check that all DBs in question are up-to-date" operator="OR">
0d5c10
+        <criterion comment="{{{ db_name }}} database is up-to-date wrt keyfiles" test_ref="test_dconf_{{{ db_name }}}_up_to_date" />
0d5c10
+	<criterion comment="no keyfiles applicable to the {{{ db_name }}} database" test_ref="test_dconf_{{{ db_name }}}_no_keyfiles" />
0d5c10
+      </criteria>
0d5c10
   {{% endmacro %}}
0d5c10
 
0d5c10
   <definition class="compliance" id="dconf_db_up_to_date" version="2">
0d5c10
diff --git a/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_keyfiles.pass.sh b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_keyfiles.pass.sh
0d5c10
new file mode 100644
0d5c10
index 0000000000..06945575f1
0d5c10
--- /dev/null
0d5c10
+++ b/tests/data/group_system/group_software/group_gnome/rule_dconf_db_up_to_date/no_keyfiles.pass.sh
0d5c10
@@ -0,0 +1,8 @@
0d5c10
+#!/bin/bash
0d5c10
+# profiles = xccdf_org.ssgproject.content_profile_ospp
0d5c10
+
0d5c10
+. ../dconf_test_functions.sh
0d5c10
+
0d5c10
+install_dconf_and_gdm_if_needed
0d5c10
+
0d5c10
+clean_dconf_settings