## <summary>User-based access control policy</summary>
## <required val="true">
##	Contains attributes used in UBAC policy.
## </required>

########################################
## <summary>
##	Constrain by user-based access control (UBAC).
## </summary>
## <desc>
##	<p>
##	Constrain the specified type by user-based
##	access control (UBAC).  Typically, these are
##	user processes or user files that need to be
##	differentiated by SELinux user.  Normally this
##	does not include administrative or privileged
##	programs. For the UBAC rules to be enforced,
##	both the subject (source) type and the object
##	(target) types must be UBAC constrained.
##	</p>
## </desc>
## <param name="type">
##	<summary>
##	Type to be constrained by UBAC.
##	</summary>
## </param>
## <infoflow type="none"/>
#
interface(`ubac_constrained',`
	gen_require(`
		attribute ubac_constrained_type;
	')

	typeattribute $1 ubac_constrained_type;
')

########################################
## <summary>
##	Exempt user-based access control for files.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_file_exempt',`
	gen_require(`
		attribute ubacfile;
	')

	typeattribute $1 ubacfile;
')

########################################
## <summary>
##	Exempt user-based access control for processes.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_process_exempt',`
	gen_require(`
		attribute ubacproc;
	')

	typeattribute $1 ubacproc;
')

########################################
## <summary>
##	Exempt user-based access control for file descriptors.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_fd_exempt',`
	gen_require(`
		attribute ubacfd;
	')

	typeattribute $1 ubacfd;
')

########################################
## <summary>
##	Exempt user-based access control for sockets.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_socket_exempt',`
	gen_require(`
		attribute ubacsock;
	')

	typeattribute $1 ubacsock;
')

########################################
## <summary>
##	Exempt user-based access control for SysV IPC.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_sysvipc_exempt',`
	gen_require(`
		attribute ubacipc;
	')

	typeattribute $1 ubacipc;
')

########################################
## <summary>
##	Exempt user-based access control for X Windows.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_xwin_exempt',`
	gen_require(`
		attribute ubacxwin;
	')

	typeattribute $1 ubacxwin;
')

########################################
## <summary>
##	Exempt user-based access control for dbus.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_dbus_exempt',`
	gen_require(`
		attribute ubacdbus;
	')

	typeattribute $1 ubacdbus;
')

########################################
## <summary>
##	Exempt user-based access control for keys.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_key_exempt',`
	gen_require(`
		attribute ubackey;
	')

	typeattribute $1 ubackey;
')

########################################
## <summary>
##	Exempt user-based access control for databases.
## </summary>
## <param name="domain">
##	<summary>
##	Domain to be exempted.
##	</summary>
## </param>
#
interface(`ubac_db_exempt',`
	gen_require(`
		attribute ubacdb;
	')

	typeattribute $1 ubacdb;
')
