diff --git a/refpolicy/policy/modules/kernel/filesystem.if b/refpolicy/policy/modules/kernel/filesystem.if
index f12e5d4..0725f40 100644
--- a/refpolicy/policy/modules/kernel/filesystem.if
+++ b/refpolicy/policy/modules/kernel/filesystem.if
@@ -2367,6 +2367,23 @@ interface(`fs_relabelfrom_all_fs',`
########################################
##
+## Get the attributes of all directories
+## with a filesystem type.
+##
+##
+## Domain allowed access.
+##
+#
+interface(`fs_getattr_all_dirs',`
+ gen_require(`
+ attribute filesystem_type;
+ ')
+
+ allow $1 filesystem_type:dir search_dir_perms;
+')
+
+########################################
+##
## Search all directories with a filesystem type.
##
##
@@ -2376,10 +2393,9 @@ interface(`fs_relabelfrom_all_fs',`
interface(`fs_search_all',`
gen_require(`
attribute filesystem_type;
- class dir { getattr search };
')
- allow $1 filesystem_type:dir { getattr search };
+ allow $1 filesystem_type:dir search_dir_perms;
')
########################################
diff --git a/refpolicy/policy/modules/kernel/kernel.if b/refpolicy/policy/modules/kernel/kernel.if
index 886a4ec..5510188 100644
--- a/refpolicy/policy/modules/kernel/kernel.if
+++ b/refpolicy/policy/modules/kernel/kernel.if
@@ -1494,7 +1494,6 @@ interface(`kernel_sigchld_unlabeled',`
interface(`kernel_list_unlabeled',`
gen_require(`
type unlabeled_t;
- class dir r_dir_perms;
')
allow $1 unlabeled_t:dir r_dir_perms;
@@ -1502,6 +1501,22 @@ interface(`kernel_list_unlabeled',`
########################################
##
+## Do not audit attempts to list unlabeled directories.
+##
+##
+## Domain allowed access.
+##
+#
+interface(`kernel_dontaudit_list_unlabeled',`
+ gen_require(`
+ type unlabeled_t;
+ ')
+
+ dontaudit $1 unlabeled_t:dir list_dir_perms;
+')
+
+########################################
+##
## Read and write unlabeled directories.
##
##
@@ -1511,7 +1526,6 @@ interface(`kernel_list_unlabeled',`
interface(`kernel_rw_unlabeled_dir',`
gen_require(`
type unlabeled_t;
- class dir rw_dir_perms;
')
allow $1 unlabeled_t:dir rw_dir_perms;
@@ -1553,6 +1567,57 @@ interface(`kernel_dontaudit_read_unlabeled_file',`
########################################
##
+## Do not audit attempts by caller to get the
+## attributes of unlabeled symbolic links.
+##
+##
+## The process type not to audit.
+##
+#
+interface(`kernel_dontaudit_getattr_unlabeled_symlinks',`
+ gen_require(`
+ type unlabeled_t;
+ ')
+
+ dontaudit $1 unlabeled_t:lnk_file getattr;
+')
+
+########################################
+##
+## Do not audit attempts by caller to get the
+## attributes of unlabeled named pipes.
+##
+##
+## The process type not to audit.
+##
+#
+interface(`kernel_dontaudit_getattr_unlabeled_pipes',`
+ gen_require(`
+ type unlabeled_t;
+ ')
+
+ dontaudit $1 unlabeled_t:fifo_file getattr;
+')
+
+########################################
+##
+## Do not audit attempts by caller to get the
+## attributes of unlabeled named sockets.
+##
+##
+## The process type not to audit.
+##
+#
+interface(`kernel_dontaudit_getattr_unlabeled_sockets',`
+ gen_require(`
+ type unlabeled_t;
+ ')
+
+ dontaudit $1 unlabeled_t:sock_file getattr;
+')
+
+########################################
+##
## Do not audit attempts by caller to get attributes for
## unlabeled block devices.
##
@@ -1563,7 +1628,6 @@ interface(`kernel_dontaudit_read_unlabeled_file',`
interface(`kernel_dontaudit_getattr_unlabeled_blk_dev',`
gen_require(`
type unlabeled_t;
- class blk_file getattr;
')
dontaudit $1 unlabeled_t:blk_file getattr;
@@ -1580,7 +1644,6 @@ interface(`kernel_dontaudit_getattr_unlabeled_blk_dev',`
interface(`kernel_use_unlabeled_blk_dev',`
gen_require(`
type unlabeled_t;
- class blk_file rw_file_perms;
')
allow $1 unlabeled_t:blk_file getattr;
@@ -1588,6 +1651,23 @@ interface(`kernel_use_unlabeled_blk_dev',`
########################################
##
+## Do not audit attempts by caller to get attributes for
+## unlabeled character devices.
+##
+##
+## The process type not to audit.
+##
+#
+interface(`kernel_dontaudit_getattr_unlabeled_chr_dev',`
+ gen_require(`
+ type unlabeled_t;
+ ')
+
+ dontaudit $1 unlabeled_t:chr_file getattr;
+')
+
+########################################
+##
## Allow caller to relabel unlabeled objects.
##
##
diff --git a/refpolicy/policy/modules/services/cron.if b/refpolicy/policy/modules/services/cron.if
index 6777f82..ad04e4d 100644
--- a/refpolicy/policy/modules/services/cron.if
+++ b/refpolicy/policy/modules/services/cron.if
@@ -104,6 +104,7 @@ template(`cron_per_userdomain_template',`
domain_exec_all_entry_files($1_crond_t)
# quiet other ps operations
domain_dontaudit_read_all_domains_state($1_crond_t)
+ domain_dontaudit_getattr_all_domains($1_crond_t)
files_read_usr_files($1_crond_t)
files_exec_etc_files($1_crond_t)
diff --git a/refpolicy/policy/modules/services/cron.te b/refpolicy/policy/modules/services/cron.te
index 7f106b9..c59ade9 100644
--- a/refpolicy/policy/modules/services/cron.te
+++ b/refpolicy/policy/modules/services/cron.te
@@ -1,5 +1,5 @@
-policy_module(cron, 1.0.1)
+policy_module(cron, 1.0.2)
gen_require(`
class passwd rootok;
diff --git a/refpolicy/policy/modules/services/hal.if b/refpolicy/policy/modules/services/hal.if
index 176811a..6bb4483 100644
--- a/refpolicy/policy/modules/services/hal.if
+++ b/refpolicy/policy/modules/services/hal.if
@@ -71,3 +71,22 @@ interface(`hal_dbus_send',`
allow $1 hald_t:dbus send_msg;
')
+
+########################################
+##
+## Send and receive messages from
+## hal over dbus.
+##
+##
+## Domain allowed access.
+##
+#
+interface(`hal_dbus_chat',`
+ gen_require(`
+ type hald_t;
+ class dbus send_msg;
+ ')
+
+ allow $1 hald_t:dbus send_msg;
+ allow hald_t $1:dbus send_msg;
+')
diff --git a/refpolicy/policy/modules/services/inetd.if b/refpolicy/policy/modules/services/inetd.if
index d03e202..a0dad85 100644
--- a/refpolicy/policy/modules/services/inetd.if
+++ b/refpolicy/policy/modules/services/inetd.if
@@ -216,9 +216,24 @@ interface(`inetd_domtrans_child',`
interface(`inetd_udp_sendto',`
gen_require(`
type inetd_t;
- class udp_socket { sendto recvfrom };
')
allow $1 inetd_t:udp_socket sendto;
allow inetd_t $1:udp_socket recvfrom;
')
+
+########################################
+##
+## Read and write inetd TCP sockets.
+##
+##
+## The type of the process performing this action.
+##
+#
+interface(`inetd_rw_tcp_socket',`
+ gen_require(`
+ type inetd_t;
+ ')
+
+ allow $1 inetd_t:tcp_socket rw_stream_socket_perms;
+')
diff --git a/refpolicy/policy/modules/services/radius.te b/refpolicy/policy/modules/services/radius.te
index 66574c4..e115360 100644
--- a/refpolicy/policy/modules/services/radius.te
+++ b/refpolicy/policy/modules/services/radius.te
@@ -1,5 +1,5 @@
-policy_module(radius,1.0)
+policy_module(radius,1.0.1)
########################################
#
diff --git a/refpolicy/policy/modules/system/authlogin.if b/refpolicy/policy/modules/system/authlogin.if
index ed33f9f..d64453f 100644
--- a/refpolicy/policy/modules/system/authlogin.if
+++ b/refpolicy/policy/modules/system/authlogin.if
@@ -610,6 +610,25 @@ interface(`auth_domtrans_pam_console',`
allow pam_console_t $1:process sigchld;
')
+########################################
+##
+## Search the contents of the
+## pam_console data directory.
+##
+##
+## The type of the process performing this action.
+##
+#
+interface(`auth_search_pam_console_data',`
+ gen_require(`
+ type pam_var_console_t;
+ ')
+
+ files_search_var($1)
+ files_search_pids($1)
+ allow $1 pam_var_console_t:dir search_dir_perms;
+')
+
#######################################
#
# auth_list_pam_console_data(domain)
@@ -617,7 +636,6 @@ interface(`auth_domtrans_pam_console',`
interface(`auth_list_pam_console_data',`
gen_require(`
type pam_var_console_t;
- class dir r_dir_perms;
')
files_search_var($1)
diff --git a/refpolicy/policy/modules/system/domain.if b/refpolicy/policy/modules/system/domain.if
index e0b316c..d2546fa 100644
--- a/refpolicy/policy/modules/system/domain.if
+++ b/refpolicy/policy/modules/system/domain.if
@@ -530,6 +530,22 @@ interface(`domain_getattr_all_domains',`
########################################
##
+## Get the attributes of all domains of all domains.
+##
+##
+## Domain allowed access.
+##
+#
+interface(`domain_dontaudit_getattr_all_domains',`
+ gen_require(`
+ attribute domain;
+ ')
+
+ dontaudit $1 domain:process getattr;
+')
+
+########################################
+##
## Read the process state (/proc/pid) of all confined domains.
##
##
@@ -648,15 +664,15 @@ interface(`domain_dontaudit_ptrace_confined_domains',`
interface(`domain_dontaudit_read_all_domains_state',`
gen_require(`
attribute domain;
- class dir r_dir_perms;
- class lnk_file r_file_perms;
- class file r_file_perms;
')
dontaudit $1 domain:dir r_dir_perms;
dontaudit $1 domain:lnk_file r_file_perms;
dontaudit $1 domain:file r_file_perms;
- dontaudit $1 domain:process getattr;
+
+ # cjp: these should be removed:
+ dontaudit $1 domain:sock_file r_file_perms;
+ dontaudit $1 domain:fifo_file r_file_perms;
')
########################################
diff --git a/refpolicy/policy/modules/system/hotplug.te b/refpolicy/policy/modules/system/hotplug.te
index 1928763..675d039 100644
--- a/refpolicy/policy/modules/system/hotplug.te
+++ b/refpolicy/policy/modules/system/hotplug.te
@@ -1,5 +1,5 @@
-policy_module(hotplug, 1.0)
+policy_module(hotplug,1.0.1)
########################################
#
@@ -87,6 +87,7 @@ corecmd_exec_ls(hotplug_t)
domain_use_wide_inherit_fd(hotplug_t)
# for ps
domain_dontaudit_read_all_domains_state(hotplug_t)
+domain_dontaudit_getattr_all_domains(hotplug_t)
files_read_etc_files(hotplug_t)
files_manage_etc_runtime_files(hotplug_t)
diff --git a/refpolicy/policy/modules/system/userdomain.if b/refpolicy/policy/modules/system/userdomain.if
index c2362ec..fdd932b 100644
--- a/refpolicy/policy/modules/system/userdomain.if
+++ b/refpolicy/policy/modules/system/userdomain.if
@@ -142,7 +142,13 @@ template(`base_user_template',`
per_userdomain_templates($1,$1_t,$1_r)
kernel_read_kernel_sysctl($1_t)
- selinux_get_fs_mount($1_t)
+ kernel_dontaudit_list_unlabeled($1_t)
+ kernel_dontaudit_getattr_unlabeled_file($1_t)
+ kernel_dontaudit_getattr_unlabeled_symlinks($1_t)
+ kernel_dontaudit_getattr_unlabeled_pipes($1_t)
+ kernel_dontaudit_getattr_unlabeled_sockets($1_t)
+ kernel_dontaudit_getattr_unlabeled_blk_dev($1_t)
+ kernel_dontaudit_getattr_unlabeled_chr_dev($1_t)
# Very permissive allowing every domain to see every type:
kernel_get_sysvipc_info($1_t)
# Find CDROM devices:
@@ -180,6 +186,7 @@ template(`base_user_template',`
fs_get_all_fs_quotas($1_t)
fs_getattr_all_fs($1_t)
+ fs_getattr_all_dirs($1_t)
fs_search_auto_mountpoints($1_t)
# cjp: some of this probably can be removed
@@ -195,6 +202,7 @@ template(`base_user_template',`
auth_read_login_records($1_t)
auth_dontaudit_write_login_records($1_t)
+ auth_search_pam_console_data($1_t)
auth_run_pam($1_t,$1_r,{ $1_tty_device_t $1_devpts_t })
auth_run_utempter($1_t,$1_r,{ $1_tty_device_t $1_devpts_t })
@@ -207,6 +215,7 @@ template(`base_user_template',`
# When the user domain runs ps, there will be a number of access
# denials when ps tries to search /proc. Do not audit these denials.
domain_dontaudit_read_all_domains_state($1_t)
+ domain_dontaudit_getattr_all_domains($1_t)
domain_dontaudit_getsession_all_domains($1_t)
files_exec_etc_files($1_t)
@@ -304,6 +313,11 @@ template(`base_user_template',`
term_getattr_all_user_ttys($1_t)
')
+ optional_policy(`apm',`
+ # Allow graphical boot to check battery lifespan
+ apm_stream_connect($1_t)
+ ')
+
optional_policy(`canna',`
canna_stream_connect($1_t)
')
@@ -311,6 +325,10 @@ template(`base_user_template',`
optional_policy(`dbus',`
dbus_system_bus_client_template($1,$1_t)
+ optional_policy(`hal',`
+ hal_dbus_chat($1_t)
+ ')
+
optional_policy(`networkmanager',`
networkmanager_dbus_chat($1_t)
')
@@ -332,6 +350,9 @@ template(`base_user_template',`
optional_policy(`inetd',`
inetd_tcp_connect($1_t)
+ inetd_udp_sendto($1_t)
+ inetd_use_fd($1_t)
+ inetd_rw_tcp_socket($1_t)
')
optional_policy(`inn',`
@@ -345,7 +366,7 @@ template(`base_user_template',`
')
optional_policy(`mysql',`
- ifdef(`targeted_policy',`',`
+ ifdef(`strict_policy',`
tunable_policy(`allow_user_mysql_connect',`
mysql_stream_connect($1_t)
')
@@ -361,12 +382,17 @@ template(`base_user_template',`
pcmcia_read_pid($1_t)
')
+ optional_policy(`portmap',`
+ portmap_tcp_connect($1_t)
+ ')
+
optional_policy(`quota',`
quota_dontaudit_getattr_db($1_t)
')
optional_policy(`rpc',`
rpc_dontaudit_getattr_exports($1_t)
+ rpc_manage_nfs_rw_content($1_t)
')
optional_policy(`rpm',`
@@ -374,6 +400,10 @@ template(`base_user_template',`
files_search_var_lib($1_t)
')
+ optional_policy(`samba',`
+ samba_connect_winbind($1_t)
+ ')
+
optional_policy(`squid',`
squid_use($1_t)
')
@@ -384,9 +414,6 @@ template(`base_user_template',`
')
ifdef(`TODO',`
-
- can_winbind($1_t)
-
#
# Cups daemon running as user tries to write /etc/printcap
#
@@ -395,13 +422,6 @@ template(`base_user_template',`
# Check to see if cdrom is mounted
allow $1_t mnt_t:dir { getattr search };
- #
- # Added to allow reading of cdrom
- #
- allow $1_t rpc_pipefs_t:dir getattr;
- allow $1_t nfsd_fs_t:dir getattr;
- allow $1_t binfmt_misc_fs_t:dir getattr;
-
# /initrd is left mounted, various programs try to look at it
dontaudit $1_t ramfs_t:dir getattr;
@@ -412,12 +432,7 @@ template(`base_user_template',`
r_dir_file($1_t, usercanread)
- allow $1_t fs_type:dir getattr;
-
# old browser_domain():
- dontaudit $1 unlabeled_t:dir_file_class_set getattr;
- dontaudit $1 unlabeled_t:dir search;
- dontaudit $1 unlabeled_t:dir read;
dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir_file_class_set getattr;
dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir search;
dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir read;
@@ -426,32 +441,6 @@ template(`base_user_template',`
can_resmgrd_connect($1_t)
- # Grant permissions to access the system DBus
- ifdef(`dbusd.te', `
- ifdef(`hald.te', `
- allow $1_t hald_t:dbus send_msg;
- allow hald_t $1_t:dbus send_msg;
- ')
- ')
-
- # Gnome pannel binds to the following
- ifdef(`cups.te', `
- allow $1_t { cupsd_etc_t cupsd_rw_etc_t }:file r_file_perms;
- ')
-
- ifdef(`inetd.te', `
- # Connect to inetd.
- inetd_tcp_connect($1_t)
- can_udp_send($1_t, inetd_t)
- can_udp_send(inetd_t, $1_t)
- # Inherit and use sockets from inetd
- inetd_use_fd($1_t)
- allow $1_t inetd_t:tcp_socket rw_stream_socket_perms;
- ')
-
- # Connect to portmap.
- ifdef(`portmap.te', `can_tcp_connect($1_t, portmap_t)')
-
# Use X
x_client_domain($1, $1)
@@ -472,10 +461,7 @@ template(`base_user_template',`
')
# start read_fonts()
-
- # cjp: this macro is unconditional, though
- # its in a conditional file.
-
+ # cjp: these types come in from fontconfig
# Manipulate the global font cache
create_dir_file($1, $1_fonts_cache_t)
@@ -488,23 +474,6 @@ template(`base_user_template',`
allow $1 $2_gnome_settings_t:dir { getattr search };
')
# end read_fonts()
-
- ifdef(`rpcd.te', `
- create_dir_file($1_t, nfsd_rw_t)
- ')
-
- #
- # Allow graphical boot to check battery lifespan
- #
- ifdef(`apmd.te', `
- allow $1_t apmd_t:unix_stream_socket connectto;
- allow $1_t apmd_var_run_t:sock_file write;
- ')
-
- ifdef(`pamconsole.te', `
- allow $1_t pam_var_console_t:dir search;
- ')
-
') dnl endif TODO
')
diff --git a/refpolicy/policy/modules/system/userdomain.te b/refpolicy/policy/modules/system/userdomain.te
index a5edddb..7156e8f 100644
--- a/refpolicy/policy/modules/system/userdomain.te
+++ b/refpolicy/policy/modules/system/userdomain.te
@@ -1,5 +1,5 @@
-policy_module(userdomain,1.0.3)
+policy_module(userdomain,1.0.4)
########################################
#