diff --git a/policy/modules/roles/staff.te b/policy/modules/roles/staff.te
index fb513ee5f..29bce30e9 100644
--- a/policy/modules/roles/staff.te
+++ b/policy/modules/roles/staff.te
@@ -95,7 +95,7 @@ ifndef(`distro_redhat',`
')
optional_policy(`
- cron_role(staff_r, staff_t)
+ cron_role(staff, staff_t, staff_application_exec_domain, staff_r)
')
optional_policy(`
diff --git a/policy/modules/roles/sysadm.te b/policy/modules/roles/sysadm.te
index 338bd8364..1040350c9 100644
--- a/policy/modules/roles/sysadm.te
+++ b/policy/modules/roles/sysadm.te
@@ -1222,7 +1222,7 @@ ifndef(`distro_redhat',`
')
optional_policy(`
- cron_admin_role(sysadm_r, sysadm_t)
+ cron_admin_role(sysadm, sysadm_t, sysadm_application_exec_domain, sysadm_r)
')
optional_policy(`
diff --git a/policy/modules/roles/unprivuser.te b/policy/modules/roles/unprivuser.te
index 0ec0eb7e6..539d26333 100644
--- a/policy/modules/roles/unprivuser.te
+++ b/policy/modules/roles/unprivuser.te
@@ -59,7 +59,7 @@ ifndef(`distro_redhat',`
')
optional_policy(`
- cron_role(user_r, user_t)
+ cron_role(user, user_t, user_application_exec_domain, user_r)
')
optional_policy(`
diff --git a/policy/modules/services/cron.if b/policy/modules/services/cron.if
index d55b3f4af..ecf895216 100644
--- a/policy/modules/services/cron.if
+++ b/policy/modules/services/cron.if
@@ -44,19 +44,30 @@ template(`cron_common_crontab_template',`
##
## Role access for cron.
##
-##
+##
##
-## Role allowed access.
+## The prefix of the user role (e.g., user
+## is the prefix for user_r).
##
##
-##
+##
##
## User domain for the role.
##
##
+##
+##
+## User exec domain for execute and transition access.
+##
+##
+##
+##
+## Role allowed access
+##
+##
##
#
-interface(`cron_role',`
+template(`cron_role',`
gen_require(`
type cronjob_t, crontab_t, crontab_exec_t;
type user_cron_spool_t, crond_t;
@@ -68,7 +79,7 @@ interface(`cron_role',`
# Declarations
#
- role $1 types { cronjob_t crontab_t };
+ role $4 types { cronjob_t crontab_t };
##############################
#
@@ -77,7 +88,7 @@ interface(`cron_role',`
domtrans_pattern($2, crontab_exec_t, crontab_t)
- dontaudit crond_t $2:process { noatsecure rlimitinh siginh };
+ dontaudit crond_t $3:process { noatsecure rlimitinh siginh };
allow $2 crond_t:process sigchld;
allow $2 user_cron_spool_t:file rw_inherited_file_perms;
@@ -126,18 +137,29 @@ interface(`cron_role',`
##
## Role access for unconfined cron.
##
-##
+##
##
-## Role allowed access.
+## The prefix of the user role (e.g., user
+## is the prefix for user_r).
##
##
-##
+##
##
## User domain for the role.
##
##
+##
+##
+## User exec domain for execute and transition access.
+##
+##
+##
+##
+## Role allowed access
+##
+##
#
-interface(`cron_unconfined_role',`
+template(`cron_unconfined_role',`
gen_require(`
type unconfined_cronjob_t, crontab_t, crontab_exec_t;
type crond_t, user_cron_spool_t;
@@ -149,7 +171,7 @@ interface(`cron_unconfined_role',`
# Declarations
#
- role $1 types { unconfined_cronjob_t crontab_t };
+ role $4 types { unconfined_cronjob_t crontab_t };
##############################
#
@@ -207,18 +229,29 @@ interface(`cron_unconfined_role',`
##
## Role access for admin cron.
##
-##
+##
##
-## Role allowed access.
+## The prefix of the user role (e.g., user
+## is the prefix for user_r).
##
##
-##
+##
##
## User domain for the role.
##
##
+##
+##
+## User exec domain for execute and transition access.
+##
+##
+##
+##
+## Role allowed access
+##
+##
#
-interface(`cron_admin_role',`
+template(`cron_admin_role',`
gen_require(`
type cronjob_t, crontab_exec_t, admin_crontab_t;
class passwd crontab;
@@ -231,7 +264,7 @@ interface(`cron_admin_role',`
# Declarations
#
- role $1 types { cronjob_t admin_crontab_t };
+ role $4 types { cronjob_t admin_crontab_t };
##############################
#
diff --git a/policy/modules/system/unconfined.te b/policy/modules/system/unconfined.te
index 22a9a8d42..f02791dde 100644
--- a/policy/modules/system/unconfined.te
+++ b/policy/modules/system/unconfined.te
@@ -84,7 +84,7 @@ optional_policy(`
')
optional_policy(`
- cron_unconfined_role(unconfined_r, unconfined_t)
+ cron_unconfined_role(unconfined, unconfined_t, unconfined_application_exec_domain, unconfined_r)
')
optional_policy(`