Chris PeBenito b16c6b8
Chris PeBenito b16c6b8
policy_module(userdomain,1.0)
Chris PeBenito b16c6b8
Chris PeBenito b16c6b8
########################################
Chris PeBenito b16c6b8
#
Chris PeBenito b16c6b8
# Declarations
Chris PeBenito b16c6b8
#
Chris PeBenito b16c6b8
Chris PeBenito daa0e0b
# admin users terminals (tty and pty)
Chris PeBenito daa0e0b
attribute admin_terminal;
Chris PeBenito daa0e0b
Chris PeBenito daa0e0b
# users home directory
Chris PeBenito daa0e0b
attribute home_dir_type;
Chris PeBenito daa0e0b
Chris PeBenito daa0e0b
# users home directory contents
Chris PeBenito daa0e0b
attribute home_type;
Chris PeBenito daa0e0b
Chris PeBenito b16c6b8
# The privhome attribute identifies every domain that can create files under
Chris PeBenito b16c6b8
# regular user home directories in the regular context (IE act on behalf of
Chris PeBenito b16c6b8
# a user in writing regular files)
Chris PeBenito b16c6b8
attribute privhome;
Chris PeBenito b16c6b8
Chris PeBenito 23ca91f
# all unprivileged users home directories
Chris PeBenito 23ca91f
attribute user_home_dir_type;
Chris PeBenito 23ca91f
attribute user_home_type;
Chris PeBenito 23ca91f
Chris PeBenito 23ca91f
# all unprivileged users ptys
Chris PeBenito 23ca91f
attribute user_ptynode;
Chris PeBenito 23ca91f
Chris PeBenito ab940a4
# all unprivileged users tmp files
Chris PeBenito ab940a4
attribute user_tmpfile;
Chris PeBenito ab940a4
Chris PeBenito ebdc3b7
# all unprivileged users ttys
Chris PeBenito ebdc3b7
attribute user_ttynode;
Chris PeBenito ebdc3b7
Chris PeBenito b16c6b8
# all user domains
Chris PeBenito b16c6b8
attribute userdomain;
Chris PeBenito b16c6b8
Chris PeBenito b16c6b8
# unprivileged user domains
Chris PeBenito b16c6b8
attribute unpriv_userdomain;
Chris PeBenito b16c6b8
Chris PeBenito b16c6b8
########################################
Chris PeBenito b16c6b8
#
Chris PeBenito b16c6b8
# Local policy
Chris PeBenito b16c6b8
#
Chris PeBenito 76bff31
Chris PeBenito 32e53ac
define(`role_change',`
Chris PeBenito 0c73cd2
	allow $1_r $2_r;
Chris PeBenito 0c73cd2
	type_change $2_t $1_devpts_t:chr_file $2_devpts_t;
Chris PeBenito 0c73cd2
	type_change $2_t $1_tty_device_t:chr_file $2_tty_device_t;
Chris PeBenito 0c73cd2
	# avoid annoying messages on terminal hangup
Chris PeBenito 0c73cd2
	dontaudit $1_t { $2_devpts_t $2_tty_device_t }:chr_file ioctl;
Chris PeBenito 32e53ac
')
Chris PeBenito 32e53ac
Chris PeBenito c98340c
ifdef(`targeted_policy',`
Chris PeBenito c98340c
	# User home directory type.
Chris PeBenito 0b28a23
	type user_home_t alias { staff_home_t sysadm_home_t }, home_type;
Chris PeBenito 0b28a23
	files_type(user_home_t)
Chris PeBenito 0b28a23
Chris PeBenito c98340c
	type user_home_dir_t alias { staff_home_dir_t sysadm_home_dir_t }, home_dir_type;
Chris PeBenito 0b28a23
	files_type(user_home_dir_t)
Chris PeBenito 32e53ac
Chris PeBenito c98340c
	unconfined_role(user_r)
Chris PeBenito c98340c
	unconfined_role(sysadm_r)
Chris PeBenito 32e53ac
Chris PeBenito c98340c
	# dont need to use the full role_change()
Chris PeBenito c98340c
	allow sysadm_r system_r;
Chris PeBenito c98340c
	allow user_r system_r;
Chris PeBenito c98340c
	allow user_r sysadm_r;
Chris PeBenito c98340c
	allow system_r sysadm_r;
Chris PeBenito c98340c
	allow system_r sysadm_r;
Chris PeBenito 32e53ac
Chris PeBenito c98340c
	ifdef(`TODO',`
Chris PeBenito c98340c
	allow privhome home_root_t:dir { getattr search };
Chris PeBenito c98340c
	file_type_auto_trans(privhome, user_home_dir_t, user_home_t)
Chris PeBenito c98340c
	')
Chris PeBenito c98340c
',`
Chris PeBenito c98340c
	admin_user_template(sysadm)
Chris PeBenito c98340c
	unpriv_user_template(staff)
Chris PeBenito c98340c
	unpriv_user_template(user)
Chris PeBenito c98340c
Chris PeBenito c98340c
	# user role change rules:
Chris PeBenito c98340c
	# sysadm_r can change to user roles
Chris PeBenito c98340c
	role_change(sysadm, user)
Chris PeBenito c98340c
	role_change(sysadm, staff)
Chris PeBenito c98340c
Chris PeBenito c98340c
	# only staff_r can change to sysadm_r
Chris PeBenito c98340c
	role_change(staff, sysadm)
Chris PeBenito c98340c
Chris PeBenito c98340c
	# this should be tunable_policy, but
Chris PeBenito c98340c
	# currently type_change and RBAC allow
Chris PeBenito c98340c
	# do not work in conditionals
Chris PeBenito c98340c
	ifdef(`user_canbe_sysadm',`
Chris PeBenito c98340c
		role_change(user,sysadm)
Chris PeBenito c98340c
	')
Chris PeBenito 76bff31
Chris PeBenito c98340c
	ifdef(`TODO',`
Chris PeBenito c98340c
	allow privhome home_root_t:dir { getattr search };
Chris PeBenito c98340c
	')
Chris PeBenito daa0e0b
Chris PeBenito c98340c
	########################################
Chris PeBenito c98340c
	#
Chris PeBenito c98340c
	# Sysadm local policy
Chris PeBenito c98340c
	#
Chris PeBenito daa0e0b
Chris PeBenito c98340c
	# for su
Chris PeBenito c98340c
	allow sysadm_t userdomain:fd use;
Chris PeBenito 76bff31
Chris PeBenito c98340c
	# Add/remove user home directories
Chris PeBenito c98340c
	allow sysadm_t user_home_dir_t:dir create_dir_perms;
Chris PeBenito c98340c
	files_create_home_dirs(sysadm_t,user_home_dir_t)
Chris PeBenito dc771ff
Chris PeBenito e5f8060
	ifdef(`direct_sysadm_daemon',`
Chris PeBenito e5f8060
		optional_policy(`init.te',`
Chris PeBenito e5f8060
			init_run_daemon(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito e5f8060
		')
Chris PeBenito e5f8060
	')
Chris PeBenito e5f8060
Chris PeBenito c98340c
	optional_policy(`bootloader.te',`
Chris PeBenito c98340c
		bootloader_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito 32e53ac
Chris PeBenito d83fdad
	optional_policy(`bind.te',`
Chris PeBenito d83fdad
		bind_run_ndc(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito d83fdad
	')
Chris PeBenito d83fdad
Chris PeBenito c98340c
	optional_policy(`clock.te',`
Chris PeBenito c98340c
		clock_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito 58c3da5
Chris PeBenito 57a96cb
	optional_policy(`firstboot.te',`
Chris PeBenito 57a96cb
		firstboot_run(sysadm_t,sysadm_r,sysadm_tty_device_t)
Chris PeBenito 57a96cb
	')
Chris PeBenito 57a96cb
Chris PeBenito c98340c
	optional_policy(`fstools.te',`
Chris PeBenito c98340c
		fstools_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito 32e53ac
Chris PeBenito c98340c
	optional_policy(`hostname.te',`
Chris PeBenito c98340c
		hostname_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito daa0e0b
Chris PeBenito a5f339f
	optional_policy(`ipsec.te',`
Chris PeBenito a5f339f
		# allow system administrator to use the ipsec script to look
Chris PeBenito a5f339f
		# at things (e.g., ipsec auto --status)
Chris PeBenito a5f339f
		# probably should create an ipsec_admin role for this kind of thing
Chris PeBenito a5f339f
		ipsec_exec_mgmt(sysadm_t)
Chris PeBenito 81343a6
		ipsec_stream_connect(sysadm_t)
Chris PeBenito a5f339f
		# for lsof
Chris PeBenito a5f339f
		ipsec_getattr_key_socket(sysadm_t)
Chris PeBenito a5f339f
	')
Chris PeBenito a5f339f
Chris PeBenito c98340c
	optional_policy(`iptables.te',`
Chris PeBenito c98340c
		iptables_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito 15a9613
Chris PeBenito c98340c
	optional_policy(`libraries.te',`
Chris PeBenito c98340c
		libs_run_ldconfig(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito daa0e0b
Chris PeBenito c98340c
	optional_policy(`lvm.te',`
Chris PeBenito c98340c
		lvm_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito daa0e0b
Chris PeBenito c98340c
	optional_policy(`modutils.te',`
Chris PeBenito c98340c
		modutils_run_depmod(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		modutils_run_insmod(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		modutils_run_update_mods(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito 96ce00a
Chris PeBenito c98340c
	optional_policy(`logrotate.te',`
Chris PeBenito c98340c
		logrotate_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito daa0e0b
Chris PeBenito c98340c
	optional_policy(`mount.te',`
Chris PeBenito c98340c
		mount_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito ab940a4
Chris PeBenito 42be7c2
	optional_policy(`mysql.te',`
Chris PeBenito 42be7c2
		mysql_stream_connect(sysadm_t)
Chris PeBenito 42be7c2
	')
Chris PeBenito 42be7c2
Chris PeBenito c98340c
	optional_policy(`netutils.te',`
Chris PeBenito c98340c
		netutils_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		netutils_run_ping(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		netutils_run_traceroute(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito 15a9613
Chris PeBenito 98a8ead
	optional_policy(`ntp.te',`
Chris PeBenito 98a8ead
		ntp_stub()
Chris PeBenito 98a8ead
		corenet_udp_bind_ntp_port(sysadm_t)
Chris PeBenito 98a8ead
	')
Chris PeBenito 98a8ead
Chris PeBenito e0d57fb
	optional_policy(`pcmcia.te',`
Chris PeBenito e0d57fb
		pcmcia_run_cardctl(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito e0d57fb
	')
Chris PeBenito e0d57fb
Chris PeBenito eb3cb68
	optional_policy(`portmap.te',`
Chris PeBenito eb3cb68
		portmap_run_helper(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito eb3cb68
	')
Chris PeBenito eb3cb68
Chris PeBenito 052c953
	optional_policy(`quota.te',`
Chris PeBenito 052c953
		quota_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 052c953
	')
Chris PeBenito 052c953
Chris PeBenito c98340c
	optional_policy(`rpm.te',`
Chris PeBenito c98340c
		rpm_run(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd2
	')
Chris PeBenito daa0e0b
Chris PeBenito 84c9223
	optional_policy(`samba.te',`
Chris PeBenito 84c9223
		samba_run_net(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 84c9223
	')
Chris PeBenito 84c9223
Chris PeBenito ae9e271
	optional_policy(`selinuxutil.te',`
Chris PeBenito c98340c
		seutil_run_checkpol(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		seutil_run_loadpol(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		seutil_run_restorecon(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		seutil_run_setfiles(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		optional_policy(`targeted_policy',`',`
Chris PeBenito c98340c
			seutil_run_runinit(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		')
Chris PeBenito c98340c
	')
Chris PeBenito c98340c
Chris PeBenito c98340c
	optional_policy(`sysnetwork.te',`
Chris PeBenito c98340c
		sysnet_run_ifconfig(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito daa0e0b
Chris PeBenito a5f339f
	optional_policy(`unconfined.te',`
Chris PeBenito a5f339f
		unconfined_domtrans(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito a5f339f
	')
Chris PeBenito a5f339f
Chris PeBenito c98340c
	optional_policy(`usermanage.te',`
Chris PeBenito c98340c
		usermanage_run_groupadd(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
		usermanage_run_useradd(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito c98340c
	')
Chris PeBenito daa0e0b
')