diff --git a/policy/modules/kernel/files.if b/policy/modules/kernel/files.if
index 7ea2918a..7f060666 100644
--- a/policy/modules/kernel/files.if
+++ b/policy/modules/kernel/files.if
@@ -4717,8 +4717,7 @@ interface(`files_polyinstantiate_all',`
files_search_home($1)
corecmd_exec_bin($1)
seutil_domtrans_setfiles($1)
- fs_mount_tmpfs($1)
- fs_unmount_tmpfs($1)
+ mount_domtrans($1)
')
')
diff --git a/policy/modules/kernel/files.te b/policy/modules/kernel/files.te
index 2380629a..7bc860c9 100644
--- a/policy/modules/kernel/files.te
+++ b/policy/modules/kernel/files.te
@@ -1,5 +1,5 @@
-policy_module(files,1.7.3)
+policy_module(files,1.7.4)
########################################
#
diff --git a/policy/modules/kernel/kernel.if b/policy/modules/kernel/kernel.if
index 2704cdac..a8760e60 100644
--- a/policy/modules/kernel/kernel.if
+++ b/policy/modules/kernel/kernel.if
@@ -835,6 +835,27 @@ interface(`kernel_dontaudit_read_proc_symlinks',`
dontaudit $1 proc_t:lnk_file read;
')
+#######################################
+##
+## Allow caller to read and write state information for AFS.
+##
+##
+##
+## Domain allowed access.
+##
+##
+##
+#
+interface(`kernel_rw_afs_state',`
+ gen_require(`
+ type proc_t, proc_afs_t;
+ ')
+
+ read_files_pattern($1,proc_t,proc_afs_t)
+
+ list_dirs_pattern($1,proc_t,proc_t)
+')
+
#######################################
##
## Allow caller to read the state information for software raid.
diff --git a/policy/modules/kernel/kernel.te b/policy/modules/kernel/kernel.te
index f858edbf..a3e56e7f 100644
--- a/policy/modules/kernel/kernel.te
+++ b/policy/modules/kernel/kernel.te
@@ -1,5 +1,5 @@
-policy_module(kernel,1.8.2)
+policy_module(kernel,1.8.3)
########################################
#
@@ -71,6 +71,9 @@ fs_type(proc_t)
genfscon proc / gen_context(system_u:object_r:proc_t,s0)
genfscon proc /sysvipc gen_context(system_u:object_r:proc_t,s0)
+type proc_afs_t, proc_type;
+genfscon proc /fs/openafs gen_context(system_u:object_r:proc_afs_t,s0)
+
# kernel message interface
type proc_kmsg_t, proc_type;
genfscon proc /kmsg gen_context(system_u:object_r:proc_kmsg_t,mls_systemhigh)
diff --git a/policy/modules/kernel/storage.fc b/policy/modules/kernel/storage.fc
index c2a6e654..af07b7aa 100644
--- a/policy/modules/kernel/storage.fc
+++ b/policy/modules/kernel/storage.fc
@@ -32,6 +32,7 @@
/dev/pcd[0-3] -b gen_context(system_u:object_r:removable_device_t,s0)
/dev/pd[a-d][^/]* -b gen_context(system_u:object_r:removable_device_t,s0)
/dev/pg[0-3] -c gen_context(system_u:object_r:removable_device_t,s0)
+/dev/ps3d.* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
/dev/ram.* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
/dev/rawctl -c gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
/dev/rd.* -b gen_context(system_u:object_r:fixed_disk_device_t,mls_systemhigh)
diff --git a/policy/modules/kernel/storage.te b/policy/modules/kernel/storage.te
index 717cdfa8..69a09c34 100644
--- a/policy/modules/kernel/storage.te
+++ b/policy/modules/kernel/storage.te
@@ -1,5 +1,5 @@
-policy_module(storage,1.4.1)
+policy_module(storage,1.4.2)
########################################
#
diff --git a/policy/modules/system/application.if b/policy/modules/system/application.if
index 3816dac7..8e4b8c22 100644
--- a/policy/modules/system/application.if
+++ b/policy/modules/system/application.if
@@ -61,6 +61,26 @@ interface(`application_exec',`
can_exec($1, application_exec_type)
')
+########################################
+##
+## Execute all executable files.
+##
+##
+##
+## Domain allowed access.
+##
+##
+##
+#
+interface(`application_exec_all',`
+ corecmd_dontaudit_exec_all_executables($1)
+ corecmd_exec_bin($1)
+ corecmd_exec_shell($1)
+ corecmd_exec_chroot($1)
+
+ application_exec($1)
+')
+
########################################
##
## Create a domain which can be started by users
diff --git a/policy/modules/system/application.te b/policy/modules/system/application.te
index 94c7aac4..cb067080 100644
--- a/policy/modules/system/application.te
+++ b/policy/modules/system/application.te
@@ -1,5 +1,5 @@
-policy_module(application,1.0.0)
+policy_module(application,1.0.1)
# Attribute of user applications
attribute application_domain_type;
diff --git a/policy/modules/system/authlogin.fc b/policy/modules/system/authlogin.fc
index a882151c..2cb9e785 100644
--- a/policy/modules/system/authlogin.fc
+++ b/policy/modules/system/authlogin.fc
@@ -13,6 +13,7 @@
/sbin/pam_console_apply -- gen_context(system_u:object_r:pam_console_exec_t,s0)
/sbin/pam_timestamp_check -- gen_context(system_u:object_r:pam_exec_t,s0)
/sbin/unix_chkpwd -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
+/sbin/unix_update -- gen_context(system_u:object_r:updpwd_exec_t,s0)
/sbin/unix_verify -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
ifdef(`distro_suse', `
/sbin/unix2_chkpwd -- gen_context(system_u:object_r:chkpwd_exec_t,s0)
diff --git a/policy/modules/system/authlogin.if b/policy/modules/system/authlogin.if
index fc5889de..47ac2c3b 100644
--- a/policy/modules/system/authlogin.if
+++ b/policy/modules/system/authlogin.if
@@ -26,7 +26,8 @@ template(`authlogin_common_auth_domain_template',`
type $1_chkpwd_t, can_read_shadow_passwords;
application_domain($1_chkpwd_t,chkpwd_exec_t)
- allow $1_chkpwd_t self:capability { audit_control setuid };
+ allow $1_chkpwd_t self:capability { dac_override setuid };
+ dontaudit $1_chkpwd_t self:capability sys_tty_config;
allow $1_chkpwd_t self:process getattr;
files_list_etc($1_chkpwd_t)
@@ -106,9 +107,6 @@ template(`authlogin_per_role_template',`
role $3 types $1_chkpwd_t;
role $3 types system_chkpwd_t;
- # cjp: is this really needed?
- allow $2 self:netlink_audit_socket { create_netlink_socket_perms nlmsg_relay };
-
dontaudit $2 shadow_t:file { getattr read };
# Transition from the user domain to this domain.
@@ -169,6 +167,9 @@ template(`auth_domtrans_user_chk_passwd',`
##
#
interface(`auth_login_pgm_domain',`
+ gen_require(`
+ type var_auth_t;
+ ')
domain_type($1)
domain_subj_id_change_exemption($1)
@@ -176,11 +177,22 @@ interface(`auth_login_pgm_domain',`
domain_obj_id_change_exemption($1)
role system_r types $1;
+ files_list_var_lib($1)
+ manage_files_pattern($1, var_auth_t, var_auth_t)
+
+ # needed for afs - https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=253321
+ kernel_rw_afs_state($1)
+
# for SSP/ProPolice
dev_read_urand($1)
+ # for fingerprint readers
+ dev_rw_input_dev($1)
+ dev_rw_generic_usb_dev($1)
files_read_etc_files($1)
+ fs_list_auto_mountpoints($1)
+
selinux_get_fs_mount($1)
selinux_validate_context($1)
selinux_compute_access_vector($1)
@@ -196,16 +208,20 @@ interface(`auth_login_pgm_domain',`
mls_fd_share_all_levels($1)
auth_domtrans_chk_passwd($1)
+ auth_domtrans_upd_passwd($1)
auth_dontaudit_read_shadow($1)
auth_read_login_records($1)
auth_append_login_records($1)
auth_rw_lastlog($1)
- auth_append_faillog($1)
+ auth_rw_faillog($1)
auth_exec_pam($1)
+ auth_use_nsswitch($1)
init_rw_utmp($1)
+ logging_send_audit_msgs($1)
logging_send_syslog_msg($1)
+# logging_set_loginuid($1)
seutil_read_config($1)
seutil_read_default_contexts($1)
@@ -309,11 +325,8 @@ interface(`auth_domtrans_chk_passwd',`
type system_chkpwd_t, chkpwd_exec_t, shadow_t;
')
- # cjp: is this really needed?
- allow $1 self:capability audit_control;
-
corecmd_search_bin($1)
- domtrans_pattern($1,chkpwd_exec_t,system_chkpwd_t)
+ domtrans_pattern($1, chkpwd_exec_t, system_chkpwd_t)
dontaudit $1 shadow_t:file { getattr read };
@@ -345,6 +358,86 @@ interface(`auth_domtrans_chk_passwd',`
')
')
+########################################
+##
+## Execute chkpwd programs in the chkpwd domain.
+##
+##
+##
+## Domain allowed access.
+##
+##
+##
+##
+## The role to allow the updpwd domain.
+##
+##
+##
+##
+## The type of the terminal allow the updpwd domain to use.
+##
+##
+#
+interface(`auth_run_chk_passwd',`
+ gen_require(`
+ type system_chkpwd_t;
+ ')
+
+ auth_domtrans_chk_passwd($1)
+ role $2 types system_chkpwd_t;
+ allow system_chkpwd_t $3:chr_file rw_file_perms;
+')
+
+########################################
+##
+## Execute a domain transition to run unix_update.
+##
+##
+##
+## Domain allowed to transition.
+##
+##
+#
+interface(`auth_domtrans_upd_passwd',`
+ gen_require(`
+ type updpwd_t, updpwd_exec_t;
+ ')
+
+ domtrans_pattern($1,updpwd_exec_t,updpwd_t)
+ auth_dontaudit_read_shadow($1)
+
+')
+
+########################################
+##
+## Execute updpwd programs in the updpwd domain.
+##
+##
+##
+## Domain allowed access.
+##
+##
+##
+##
+## The role to allow the updpwd domain.
+##
+##
+##
+##
+## The type of the terminal allow the updpwd domain to use.
+##
+##
+#
+interface(`auth_run_upd_passwd',`
+ gen_require(`
+ type updpwd_t;
+ ')
+
+ auth_domtrans_upd_passwd($1)
+ role $2 types updpwd_t;
+ allow updpwd_t $3:chr_file rw_file_perms;
+')
+
########################################
##
## Get the attributes of the shadow passwords file.
@@ -693,6 +786,24 @@ interface(`auth_domtrans_pam',`
domtrans_pattern($1,pam_exec_t,pam_t)
')
+########################################
+##
+## Execute pam programs in the pam domain.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`auth_signal_pam',`
+ gen_require(`
+ type pam_t;
+ ')
+
+ allow $1 pam_t:process signal;
+')
+
########################################
##
## Execute pam programs in the PAM domain.
@@ -1318,16 +1429,14 @@ interface(`auth_manage_login_records',`
##
#
interface(`auth_use_nsswitch',`
- gen_require(`
- type var_auth_t;
- ')
allow $1 self:netlink_route_socket r_netlink_socket_perms;
- allow $1 var_auth_t:dir list_dir_perms;
- allow $1 var_auth_t:file manage_file_perms;
files_list_var_lib($1)
+ # read /etc/nsswitch.conf
+ files_read_etc_files($1)
+
miscfiles_read_certs($1)
sysnet_dns_name_resolve($1)
@@ -1347,6 +1456,7 @@ interface(`auth_use_nsswitch',`
optional_policy(`
samba_stream_connect_winbind($1)
+ samba_read_var_files($1)
')
')
diff --git a/policy/modules/system/authlogin.te b/policy/modules/system/authlogin.te
index d4765bfc..c9b2cc61 100644
--- a/policy/modules/system/authlogin.te
+++ b/policy/modules/system/authlogin.te
@@ -1,5 +1,5 @@
-policy_module(authlogin,1.8.1)
+policy_module(authlogin,1.8.2)
########################################
#
@@ -49,6 +49,12 @@ neverallow ~can_read_shadow_passwords shadow_t:file read;
neverallow ~can_write_shadow_passwords shadow_t:file { create write };
neverallow ~can_relabelto_shadow_passwords shadow_t:file relabelto;
+type updpwd_t;
+type updpwd_exec_t;
+domain_type(updpwd_t)
+domain_entry_file(updpwd_t,updpwd_exec_t)
+role system_r types updpwd_t;
+
type utempter_t;
type utempter_exec_t;
application_domain(utempter_t,utempter_exec_t)
@@ -94,10 +100,14 @@ allow pam_t pam_tmp_t:dir manage_dir_perms;
allow pam_t pam_tmp_t:file manage_file_perms;
files_tmp_filetrans(pam_t, pam_tmp_t, { file dir })
+auth_use_nsswitch(pam_t)
+
kernel_read_system_state(pam_t)
fs_search_auto_mountpoints(pam_t)
+miscfiles_read_localization(pam_t)
+
term_use_all_user_ttys(pam_t)
term_use_all_user_ptys(pam_t)
@@ -149,6 +159,8 @@ dev_getattr_apm_bios_dev(pam_console_t)
dev_setattr_apm_bios_dev(pam_console_t)
dev_getattr_dri_dev(pam_console_t)
dev_setattr_dri_dev(pam_console_t)
+dev_getattr_input_dev(pam_console_t)
+dev_setattr_input_dev(pam_console_t)
dev_getattr_framebuffer_dev(pam_console_t)
dev_setattr_framebuffer_dev(pam_console_t)
dev_getattr_generic_usb_dev(pam_console_t)
@@ -159,6 +171,8 @@ dev_getattr_mouse_dev(pam_console_t)
dev_setattr_mouse_dev(pam_console_t)
dev_getattr_power_mgmt_dev(pam_console_t)
dev_setattr_power_mgmt_dev(pam_console_t)
+dev_getattr_printer_dev(pam_console_t)
+dev_setattr_printer_dev(pam_console_t)
dev_getattr_scanner_dev(pam_console_t)
dev_setattr_scanner_dev(pam_console_t)
dev_getattr_sound_dev(pam_console_t)
@@ -200,6 +214,7 @@ files_read_etc_runtime_files(pam_console_t)
fs_list_auto_mountpoints(pam_console_t)
fs_list_noxattr_fs(pam_console_t)
+fs_getattr_all_fs(pam_console_t)
init_use_fds(pam_console_t)
init_use_script_ptys(pam_console_t)
@@ -236,7 +251,7 @@ optional_policy(`
optional_policy(`
xserver_read_xdm_pid(pam_console_t)
- xserver_use_xdm_fds(pam_t)
+ xserver_dontaudit_write_log(pam_console_t)
')
########################################
@@ -257,6 +272,34 @@ userdom_dontaudit_use_unpriv_users_ttys(system_chkpwd_t)
userdom_dontaudit_use_unpriv_users_ptys(system_chkpwd_t)
userdom_dontaudit_use_sysadm_terms(system_chkpwd_t)
+########################################
+#
+# updpwd local policy
+#
+
+allow updpwd_t self:process setfscreate;
+allow updpwd_t self:fifo_file { read write };
+allow updpwd_t self:unix_stream_socket create_stream_socket_perms;
+allow updpwd_t self:unix_dgram_socket create_socket_perms;
+
+kernel_read_system_state(updpwd_t)
+
+files_manage_etc_files(updpwd_t)
+
+term_dontaudit_use_console(updpwd_t)
+term_dontaudit_use_console(updpwd_t)
+term_dontaudit_use_unallocated_ttys(updpwd_t)
+
+auth_manage_shadow(updpwd_t)
+auth_use_nsswitch(updpwd_t)
+
+libs_use_ld_so(updpwd_t)
+libs_use_shared_libs(updpwd_t)
+
+logging_send_syslog_msg(updpwd_t)
+
+miscfiles_read_localization(updpwd_t)
+
########################################
#
# Utempter local policy