trunk: add support for labeled booleans.
This commit is contained in:
		
							parent
							
								
									c1262146e0
								
							
						
					
					
						commit
						f0435b1ac4
					
				| @ -1,3 +1,4 @@ | ||||
| - Add support for labeled Booleans. | ||||
| - Remove node definitions and change node usage to generic nodes. | ||||
| - Add kernel_service access vectors, from Stephen Smalley. | ||||
| 
 | ||||
|  | ||||
| @ -5,6 +5,44 @@ | ||||
| ##	Contains the policy for the kernel SELinux security interface. | ||||
| ## </required> | ||||
| 
 | ||||
| ######################################## | ||||
| ## <summary> | ||||
| ##	Make the specified type used for labeling SELinux Booleans. | ||||
| ##	This interface is only usable in the base module. | ||||
| ## </summary> | ||||
| ## <desc> | ||||
| ##	<p> | ||||
| ##	Make the specified type used for labeling SELinux Booleans. | ||||
| ##	</p> | ||||
| ##	<p> | ||||
| ##	This makes use of genfscon statements, which are only | ||||
| ##	available in the base module.  Thus any module which calls this | ||||
| ##	interface must be included in the base module. | ||||
| ##	</p> | ||||
| ## </desc> | ||||
| ## <param name="type"> | ||||
| ##	<summary> | ||||
| ##	Type used for labeling a Boolean. | ||||
| ##	</summary> | ||||
| ## </param> | ||||
| ## <param name="boolean"> | ||||
| ##	<summary> | ||||
| ##	Name of the Boolean. | ||||
| ##	</summary> | ||||
| ## </param> | ||||
| # | ||||
| interface(`selinux_labeled_boolean',` | ||||
| 	gen_require(` | ||||
| 		attribute boolean_type; | ||||
| 	') | ||||
| 
 | ||||
| 	typeattribute $1 boolean_type; | ||||
| 
 | ||||
| 	# because of this statement, any module which | ||||
| 	# calls this interface must be in the base module: | ||||
| 	genfscon selinuxfs /booleans/$2 gen_context(system_u:object_r:$1,s0) | ||||
| ') | ||||
| 
 | ||||
| ######################################## | ||||
| ## <summary> | ||||
| ##	Get the mountpoint of the selinuxfs filesystem. | ||||
| @ -266,7 +304,7 @@ interface(`selinux_load_policy',` | ||||
| ######################################## | ||||
| ## <summary> | ||||
| ##	Allow caller to set the state of Booleans to | ||||
| ##	enable or disable conditional portions of the policy. | ||||
| ##	enable or disable conditional portions of the policy.  (Deprecated) | ||||
| ## </summary> | ||||
| ## <desc> | ||||
| ##	<p> | ||||
| @ -277,6 +315,38 @@ interface(`selinux_load_policy',` | ||||
| ##	Since this is a security event, this action is | ||||
| ##	always audited. | ||||
| ##	</p> | ||||
| ##	<p> | ||||
| ##	This interface has been deprecated.  Please use | ||||
| ##	selinux_set_generic_booleans() or selinux_set_all_booleans() | ||||
| ##	instead. | ||||
| ##	</p> | ||||
| ## </desc> | ||||
| ## <param name="domain"> | ||||
| ##	<summary> | ||||
| ##	The process type allowed to set the Boolean. | ||||
| ##	</summary> | ||||
| ## </param> | ||||
| ## <rolecap/> | ||||
| # | ||||
| interface(`selinux_set_boolean',` | ||||
| 	refpolicywarn(`$0($*) has been deprecated, use selinux_set_generic_booleans() instead.') | ||||
| 	selinux_set_generic_booleans($1) | ||||
| ') | ||||
| 
 | ||||
| ######################################## | ||||
| ## <summary> | ||||
| ##	Allow caller to set the state of generic Booleans to | ||||
| ##	enable or disable conditional portions of the policy. | ||||
| ## </summary> | ||||
| ## <desc> | ||||
| ##	<p> | ||||
| ##	Allow caller to set the state of generic Booleans to | ||||
| ##	enable or disable conditional portions of the policy. | ||||
| ##	</p> | ||||
| ##	<p> | ||||
| ##	Since this is a security event, this action is | ||||
| ##	always audited. | ||||
| ##	</p> | ||||
| ## </desc> | ||||
| ## <param name="domain"> | ||||
| ##	<summary> | ||||
| @ -285,7 +355,7 @@ interface(`selinux_load_policy',` | ||||
| ## </param> | ||||
| ## <rolecap/> | ||||
| # | ||||
| interface(`selinux_set_boolean',` | ||||
| interface(`selinux_set_generic_booleans',` | ||||
| 	gen_require(` | ||||
| 		type security_t; | ||||
| 		bool secure_mode_policyload; | ||||
| @ -304,6 +374,48 @@ interface(`selinux_set_boolean',` | ||||
| 	} | ||||
| ') | ||||
| 
 | ||||
| ######################################## | ||||
| ## <summary> | ||||
| ##	Allow caller to set the state of all Booleans to | ||||
| ##	enable or disable conditional portions of the policy. | ||||
| ## </summary> | ||||
| ## <desc> | ||||
| ##	<p> | ||||
| ##	Allow caller to set the state of all Booleans to | ||||
| ##	enable or disable conditional portions of the policy. | ||||
| ##	</p> | ||||
| ##	<p> | ||||
| ##	Since this is a security event, this action is | ||||
| ##	always audited. | ||||
| ##	</p> | ||||
| ## </desc> | ||||
| ## <param name="domain"> | ||||
| ##	<summary> | ||||
| ##	The process type allowed to set the Boolean. | ||||
| ##	</summary> | ||||
| ## </param> | ||||
| ## <rolecap/> | ||||
| # | ||||
| interface(`selinux_set_all_booleans',` | ||||
| 	gen_require(` | ||||
| 		type security_t; | ||||
| 		attribute boolean_type; | ||||
| 		bool secure_mode_policyload; | ||||
| 	') | ||||
| 
 | ||||
| 	allow $1 security_t:dir list_dir_perms; | ||||
| 	allow $1 boolean_type:file rw_file_perms; | ||||
| 
 | ||||
| 	if(!secure_mode_policyload) { | ||||
| 		allow $1 security_t:security setbool; | ||||
| 
 | ||||
| 		ifdef(`distro_rhel4',` | ||||
| 			# needed for systems without audit support | ||||
| 			auditallow $1 security_t:security setbool; | ||||
| 		') | ||||
| 	} | ||||
| ') | ||||
| 
 | ||||
| ######################################## | ||||
| ## <summary> | ||||
| ##	Allow caller to set SELinux access vector cache parameters. | ||||
|  | ||||
| @ -1,11 +1,12 @@ | ||||
| 
 | ||||
| policy_module(selinux, 1.7.0) | ||||
| policy_module(selinux, 1.7.1) | ||||
| 
 | ||||
| ######################################## | ||||
| # | ||||
| # Declarations | ||||
| # | ||||
| 
 | ||||
| attribute boolean_type; | ||||
| attribute can_load_policy; | ||||
| attribute can_setenforce; | ||||
| attribute can_setsecparam; | ||||
| @ -16,7 +17,7 @@ attribute selinux_unconfined_type; | ||||
| # the permissions in the security class.  It is also | ||||
| # applied to selinuxfs inodes. | ||||
| # | ||||
| type security_t; | ||||
| type security_t, boolean_type; | ||||
| fs_type(security_t) | ||||
| mls_trusted_object(security_t) | ||||
| sid security gen_context(system_u:object_r:security_t,mls_systemhigh) | ||||
| @ -35,11 +36,13 @@ neverallow ~{ selinux_unconfined_type can_setsecparam } security_t:security sets | ||||
| # use SELinuxfs | ||||
| allow selinux_unconfined_type security_t:dir list_dir_perms; | ||||
| allow selinux_unconfined_type security_t:file rw_file_perms; | ||||
| allow selinux_unconfined_type boolean_type:file read_file_perms; | ||||
| 
 | ||||
| # Access the security API. | ||||
| allow selinux_unconfined_type security_t:security ~{ load_policy setenforce setbool }; | ||||
| 
 | ||||
| if(!secure_mode_policyload) { | ||||
| 	allow selinux_unconfined_type boolean_type:file rw_file_perms; | ||||
| 	allow selinux_unconfined_type security_t:security { load_policy setenforce setbool }; | ||||
| 
 | ||||
| 	ifdef(`distro_rhel4',` | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| 
 | ||||
| policy_module(init, 1.13.0) | ||||
| policy_module(init, 1.13.1) | ||||
| 
 | ||||
| gen_require(` | ||||
| 	class passwd rootok; | ||||
| @ -151,7 +151,7 @@ mls_file_write_all_levels(init_t) | ||||
| mls_process_write_down(init_t) | ||||
| mls_fd_use_all_levels(init_t) | ||||
| 
 | ||||
| selinux_set_boolean(init_t) | ||||
| selinux_set_all_booleans(init_t) | ||||
| 
 | ||||
| term_use_all_terms(init_t) | ||||
| 
 | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| 
 | ||||
| policy_module(selinuxutil, 1.12.0) | ||||
| policy_module(selinuxutil, 1.12.1) | ||||
| 
 | ||||
| gen_require(` | ||||
| 	bool secure_mode; | ||||
| @ -170,7 +170,7 @@ fs_getattr_xattr_fs(load_policy_t) | ||||
| mls_file_read_all_levels(load_policy_t) | ||||
| 
 | ||||
| selinux_load_policy(load_policy_t) | ||||
| selinux_set_boolean(load_policy_t) | ||||
| selinux_set_all_booleans(load_policy_t) | ||||
| 
 | ||||
| term_use_console(load_policy_t) | ||||
| term_list_ptys(load_policy_t) | ||||
| @ -453,7 +453,7 @@ selinux_validate_context(semanage_t) | ||||
| selinux_get_enforce_mode(semanage_t) | ||||
| selinux_getattr_fs(semanage_t) | ||||
| # for setsebool: | ||||
| selinux_set_boolean(semanage_t) | ||||
| selinux_set_all_booleans(semanage_t) | ||||
| 
 | ||||
| term_use_all_terms(semanage_t) | ||||
| 
 | ||||
|  | ||||
| @ -1231,7 +1231,7 @@ template(`userdom_security_admin_template',` | ||||
| 	mls_file_downgrade($1) | ||||
| 
 | ||||
| 	selinux_set_enforce_mode($1) | ||||
| 	selinux_set_boolean($1) | ||||
| 	selinux_set_all_booleans($1) | ||||
| 	selinux_set_parameters($1) | ||||
| 
 | ||||
| 	auth_relabel_all_files_except_shadow($1) | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| 
 | ||||
| policy_module(userdomain, 4.1.2) | ||||
| policy_module(userdomain, 4.1.3) | ||||
| 
 | ||||
| ######################################## | ||||
| # | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user