Chris PeBenito b16c6b
Chris PeBenito b16c6b
policy_module(userdomain,1.0)
Chris PeBenito b16c6b
Chris PeBenito b16c6b
########################################
Chris PeBenito b16c6b
#
Chris PeBenito b16c6b
# Declarations
Chris PeBenito b16c6b
#
Chris PeBenito b16c6b
Chris PeBenito daa0e0
# admin users terminals (tty and pty)
Chris PeBenito daa0e0
attribute admin_terminal;
Chris PeBenito daa0e0
Chris PeBenito daa0e0
# users home directory
Chris PeBenito daa0e0
attribute home_dir_type;
Chris PeBenito daa0e0
Chris PeBenito daa0e0
# users home directory contents
Chris PeBenito daa0e0
attribute home_type;
Chris PeBenito daa0e0
Chris PeBenito b16c6b
# The privhome attribute identifies every domain that can create files under
Chris PeBenito b16c6b
# regular user home directories in the regular context (IE act on behalf of
Chris PeBenito b16c6b
# a user in writing regular files)
Chris PeBenito b16c6b
attribute privhome;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# all user domains
Chris PeBenito b16c6b
attribute userdomain;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# unprivileged user domains
Chris PeBenito b16c6b
attribute unpriv_userdomain;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow execution of anonymous mappings, e.g. executable stack.
Chris PeBenito b16c6b
bool allow_execmem false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Support Share libraries with Text Relocation
Chris PeBenito b16c6b
bool allow_execmod false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow system to run with kerberos
Chris PeBenito b16c6b
bool allow_kerberos false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow system to run with NIS
Chris PeBenito b16c6b
bool allow_ypbind false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow reading of default_t files.
Chris PeBenito b16c6b
bool read_default_t false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow staff_r users to search the sysadm home dir and read
Chris PeBenito b16c6b
# files (such as ~/.bashrc)
Chris PeBenito b16c6b
bool staff_read_sysadm_file false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Support NFS home directories
Chris PeBenito b16c6b
bool use_nfs_home_dirs false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Support SAMBA home directories
Chris PeBenito b16c6b
bool use_samba_home_dirs false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow regular users direct mouse access 
Chris PeBenito b16c6b
bool user_direct_mouse false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow users to read system messages.
Chris PeBenito b16c6b
bool user_dmesg false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow users to control network interfaces (also needs USERCTL=true)
Chris PeBenito b16c6b
bool user_net_control false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow user to r/w noextattrfile (FAT, CDROM, FLOPPY)
Chris PeBenito b16c6b
bool user_rw_noexattrfile false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow users to rw usb devices
Chris PeBenito b16c6b
bool user_rw_usb false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow users to run TCP servers (bind to ports and accept connection from
Chris PeBenito b16c6b
# the same domain and outside users)  disabling this forces FTP passive mode
Chris PeBenito b16c6b
# and may change other protocols 
Chris PeBenito b16c6b
bool user_tcp_server false;
Chris PeBenito b16c6b
Chris PeBenito b16c6b
# Allow w to display everyone
Chris PeBenito b16c6b
bool user_ttyfile_stat false;
Chris PeBenito b16c6b
Chris PeBenito 32e53a
admin_domain_template(sysadm)
Chris PeBenito b16c6b
user_domain_template(staff)
Chris PeBenito b16c6b
user_domain_template(user)
Chris PeBenito b16c6b
Chris PeBenito b16c6b
########################################
Chris PeBenito b16c6b
#
Chris PeBenito b16c6b
# Local policy
Chris PeBenito b16c6b
#
Chris PeBenito 76bff3
Chris PeBenito 32e53a
# user role change rules:
Chris PeBenito 32e53a
define(`role_change',`
Chris PeBenito 0c73cd
	allow $1_r $2_r;
Chris PeBenito 0c73cd
	type_change $2_t $1_devpts_t:chr_file $2_devpts_t;
Chris PeBenito 0c73cd
	type_change $2_t $1_tty_device_t:chr_file $2_tty_device_t;
Chris PeBenito 0c73cd
	# avoid annoying messages on terminal hangup
Chris PeBenito 0c73cd
	dontaudit $1_t { $2_devpts_t $2_tty_device_t }:chr_file ioctl;
Chris PeBenito 32e53a
')
Chris PeBenito 32e53a
Chris PeBenito 32e53a
# sysadm_r can change to user roles
Chris PeBenito 32e53a
role_change(sysadm, user)
Chris PeBenito 32e53a
role_change(sysadm, staff)
Chris PeBenito 32e53a
Chris PeBenito 32e53a
# only staff_r can change to sysadm_r
Chris PeBenito 32e53a
role_change(staff, sysadm)
Chris PeBenito 32e53a
Chris PeBenito 254bbc
# this should be tunable_policy, but
Chris PeBenito 254bbc
# currently type_change and RBAC allow
Chris PeBenito 254bbc
# do not work in conditionals
Chris PeBenito 254bbc
ifdef(`user_canbe_sysadm',`
Chris PeBenito 0c73cd
	role_change(user,sysadm)
Chris PeBenito 32e53a
')
Chris PeBenito 32e53a
Chris PeBenito 32e53a
ifdef(`TODO',`
Chris PeBenito 32e53a
allow privhome home_root_t:dir { getattr search };
Chris PeBenito 76bff3
Chris PeBenito daa0e0
# Add/remove user home directories
Chris PeBenito 32e53a
file_type_auto_trans(sysadm_t, home_root_t, user_home_dir_t, dir)
Chris PeBenito 32e53a
')
Chris PeBenito daa0e0
Chris PeBenito daa0e0
########################################
Chris PeBenito daa0e0
#
Chris PeBenito daa0e0
# Sysadm local policy
Chris PeBenito daa0e0
#
Chris PeBenito daa0e0
Chris PeBenito 76bff3
# for su
Chris PeBenito 76bff3
allow sysadm_t userdomain:fd use;
Chris PeBenito 76bff3
Chris PeBenito dc771f
optional_policy(`bootloader.te',`
Chris PeBenito 0c73cd
	bootloader_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito dc771f
')
Chris PeBenito dc771f
Chris PeBenito 32e53a
optional_policy(`clock.te',`
Chris PeBenito 0c73cd
	clock_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 32e53a
')
Chris PeBenito 32e53a
Chris PeBenito 32e53a
optional_policy(`hostname.te',`
Chris PeBenito 0c73cd
	hostname_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 32e53a
')
Chris PeBenito 32e53a
Chris PeBenito daa0e0
optional_policy(`iptables.te',`
Chris PeBenito 0c73cd
	iptables_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito daa0e0
')
Chris PeBenito daa0e0
Chris PeBenito 15a961
optional_policy(`libraries.te',`
Chris PeBenito 0c73cd
	libraries_ldconfig_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 15a961
')
Chris PeBenito 15a961
Chris PeBenito daa0e0
optional_policy(`lvm.te',`
Chris PeBenito 0c73cd
	lvm_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito daa0e0
')
Chris PeBenito daa0e0
Chris PeBenito daa0e0
optional_policy(`modutils.te',`
Chris PeBenito 0c73cd
	modutils_depmod_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd
	modutils_insmod_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd
	modutils_update_modules_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito daa0e0
')
Chris PeBenito daa0e0
Chris PeBenito daa0e0
optional_policy(`mount.te',`
Chris PeBenito 0c73cd
	mount_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito daa0e0
')
Chris PeBenito daa0e0
Chris PeBenito 15a961
optional_policy(`rpm.te',`
Chris PeBenito 0c73cd
	rpm_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 15a961
')
Chris PeBenito 15a961
Chris PeBenito daa0e0
optional_policy(`selinux.te',`
Chris PeBenito 0c73cd
	selinux_checkpolicy_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd
	selinux_load_policy_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd
	selinux_restorecon_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd
	selinux_setfiles_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd
	optional_policy(`targeted_policy',`',`
Chris PeBenito 0c73cd
		selinux_run_init_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd
	')
Chris PeBenito daa0e0
')
Chris PeBenito daa0e0
Chris PeBenito daa0e0
optional_policy(`sysnetwork.te',`
Chris PeBenito 0c73cd
	sysnetwork_ifconfig_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito daa0e0
')
Chris PeBenito daa0e0
Chris PeBenito 32e53a
optional_policy(`usermanage.te',`
Chris PeBenito 0c73cd
	usermanage_groupadd_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito 0c73cd
	usermanage_useradd_transition_add_role_use_terminal(sysadm_t,sysadm_r,admin_terminal)
Chris PeBenito daa0e0
')