Public feed #725496

te

public text v1 · immutable
Raw Edit
·published 2007-10-04 13:49 UTC
rendered paste body
policy_module(ut2004,1.0.2)


########################################
#
# Declarations
#


type ut2004_t;
type ut2004_exec_t;
application_domain(ut2004_t, ut2004_exec_t)
role system_r types ut2004_t;

# unused
# type ut2004_tmp_t;
# files_tmp_file(ut2004_tmp_t)

type ut2004_rw_t;
files_type(ut2004_rw_t)

type ut2004_port_t;
corenet_port(ut2004_port_t)


########################################
#
# Local policy
#

# self

allow ut2004_t self:fifo_file rw_file_perms;
allow ut2004_t self:unix_stream_socket create_stream_socket_perms;
allow ut2004_t self:tcp_socket create_stream_socket_perms;
allow ut2004_t self:udp_socket { create_socket_perms listen };

allow ut2004_t self:process execmem;
allow ut2004_t self:process signal;

allow ut2004_t self:shm { write unix_read unix_write read destroy create };


# run in our domain

optional_policy(`
	ut2004_run(guest_t, guest_r, { guest_tty_device_t guest_devpts_t })
')

optional_policy(`
	ut2004_run(staff_t, staff_r, { staff_tty_device_t staff_devpts_t })
')

optional_policy(`
	ut2004_run(sysadm_t, sysadm_r, { sysadm_tty_device_t sysadm_devpts_t })
')

optional_policy(`
	ut2004_run(unconfined_t, unconfined_r, { unconfined_tty_device_t unconfined_devpts_t })
')

optional_policy(`
	ut2004_run(user_t, user_r, { user_tty_device_t user_devpts_t })
')

optional_policy(`
	ut2004_run(xguest_t, xguest_r, { xguest_tty_device_t xguest_devpts_t })
')

# manage rw files in our domain

ut2004_manage_rw_files(ut2004_t)

# bind sockets to ports in out domain

ut2004_bind_tcp_ports(ut2004_t)
ut2004_bind_udp_ports(ut2004_t)

# connect to tcp ports in our domain

ut2004_connect_tcp_ports(ut2004_t)

# manage tmp files in our domain
# unused
# ut2004_manage_tmp_files(ut2004_t)

# write to ut2004 files on shm device

ut2004_write_shm_files(xdm_xserver_t)


# reference for other domain interfaces
#
# file:///usr/share/doc/selinux-policy-3.0.8/html/index.html


# read in other domains

files_read_etc_files(ut2004_t)
init_read_utmp(ut2004_t)
kernel_read_system_state(ut2004_t)
kernel_read_network_state(ut2004_t)
xserver_read_xdm_tmp_files(ut2004_t)
files_read_usr_files(ut2004_t)
files_read_usr_symlinks(ut2004_t)
dev_read_sound(ut2004_t)
dev_read_input(ut2004_t)
userdom_read_unpriv_users_home_content_files(ut2004_t)
xserver_read_user_iceauth(user,ut2004_t)
miscfiles_read_localization(ut2004_t)

# use in other domains

auth_use_nsswitch(ut2004_t)
libs_use_ld_so(ut2004_t)
libs_use_shared_libs(ut2004_t)

# dont audit

term_dontaudit_search_ptys(ut2004_t)
term_dontaudit_use_ptmx(ut2004_t)
init_dontaudit_write_utmp(ut2004_t)
nscd_dontaudit_search_pid(ut2004_t)
corenet_dontaudit_udp_bind_all_reserved_ports(ut2004_t)
corenet_dontaudit_udp_bind_all_ports(ut2004_t)
corenet_dontaudit_tcp_bind_all_reserved_ports(ut2004_t)
corenet_dontaudit_tcp_bind_all_ports(ut2004_t)
corenet_dontaudit_tcp_connect_all_reserved_ports(ut2004_t)
corenet_dontaudit_tcp_connect_all_ports(ut2004_t)
term_dontaudit_use_generic_ptys(ut2004_t)

# read and write in other domains

dev_rw_null(ut2004_t)
dev_rw_dri(ut2004_t)

# getattr in other domains

dev_getattr_event_dev(ut2004_t)
dev_getattr_dri_dev(ut2004_t)
files_getattr_usr_files(ut2004_t)
term_getattr_pty_fs(ut2004_t)

# search in other domains

files_search_home(ut2004_t)
files_search_tmp(ut2004_t)

# bind to any node

corenet_tcp_bind_inaddr_any_node(ut2004_t)
corenet_udp_bind_inaddr_any_node(ut2004_t)

# bind

corenet_tcp_sendrecv_all_if(ut2004_t)
corenet_tcp_sendrecv_all_nodes(ut2004_t)
corenet_tcp_sendrecv_all_ports(ut2004_t)

corenet_udp_sendrecv_all_if(ut2004_t)
corenet_udp_sendrecv_all_nodes(ut2004_t)
corenet_udp_sendrecv_all_ports(ut2004_t)
corenet_udp_bind_all_nodes(ut2004_t)

# various actions in other domains

sysnet_dns_name_resolve(ut2004_t)
logging_send_syslog_msg(ut2004_t)
xserver_create_xdm_tmp_sockets(ut2004_t)
xserver_stream_connect_xdm_xserver(ut2004_t)
fs_manage_tmpfs_files(ut2004_t)
dev_write_sound(ut2004_t)


# find existing interface
allow ut2004_t xdm_xserver_t:shm { unix_read read getattr associate };


# find existing interface
require {
	type unconfined_t;
}
dontaudit ut2004_t unconfined_t:unix_stream_socket connectto;