Home | History | Annotate | Download | only in sepolicy
      1 #
      2 # Define common prefixes for access vectors
      3 #
      4 # common common_name { permission_name ... }
      5 
      6 
      7 #
      8 # Define a common prefix for file access vectors.
      9 #
     10 
     11 common file
     12 {
     13 	ioctl
     14 	read
     15 	write
     16 	create
     17 	getattr
     18 	setattr
     19 	lock
     20 	relabelfrom
     21 	relabelto
     22 	append
     23 	unlink
     24 	link
     25 	rename
     26 	execute
     27 	swapon
     28 	quotaon
     29 	mounton
     30 }
     31 
     32 
     33 #
     34 # Define a common prefix for socket access vectors.
     35 #
     36 
     37 common socket
     38 {
     39 # inherited from file
     40 	ioctl
     41 	read
     42 	write
     43 	create
     44 	getattr
     45 	setattr
     46 	lock
     47 	relabelfrom
     48 	relabelto
     49 	append
     50 # socket-specific
     51 	bind
     52 	connect
     53 	listen
     54 	accept
     55 	getopt
     56 	setopt
     57 	shutdown
     58 	recvfrom
     59 	sendto
     60 	recv_msg
     61 	send_msg
     62 	name_bind
     63 }
     64 
     65 #
     66 # Define a common prefix for ipc access vectors.
     67 #
     68 
     69 common ipc
     70 {
     71 	create
     72 	destroy
     73 	getattr
     74 	setattr
     75 	read
     76 	write
     77 	associate
     78 	unix_read
     79 	unix_write
     80 }
     81 
     82 #
     83 #  Define a common prefix for userspace database object access vectors.
     84 #
     85 
     86 common database
     87 {
     88 	create
     89 	drop
     90 	getattr
     91 	setattr
     92 	relabelfrom
     93 	relabelto
     94 }
     95 
     96 #
     97 # Define a common prefix for pointer and keyboard access vectors.
     98 #
     99 
    100 common x_device
    101 {
    102 	getattr
    103 	setattr
    104 	use
    105 	read
    106 	write
    107 	getfocus
    108 	setfocus
    109 	bell
    110 	force_cursor
    111 	freeze
    112 	grab
    113 	manage
    114 	list_property
    115 	get_property
    116 	set_property
    117 	add
    118 	remove
    119 	create
    120 	destroy
    121 }
    122 
    123 #
    124 # Define the access vectors.
    125 #
    126 # class class_name [ inherits common_name ] { permission_name ... }
    127 
    128 
    129 #
    130 # Define the access vector interpretation for file-related objects.
    131 #
    132 
    133 class filesystem
    134 {
    135 	mount
    136 	remount
    137 	unmount
    138 	getattr
    139 	relabelfrom
    140 	relabelto
    141 	transition
    142 	associate
    143 	quotamod
    144 	quotaget
    145 }
    146 
    147 class dir
    148 inherits file
    149 {
    150 	add_name
    151 	remove_name
    152 	reparent
    153 	search
    154 	rmdir
    155 	open
    156 	audit_access
    157 	execmod
    158 }
    159 
    160 class file
    161 inherits file
    162 {
    163 	execute_no_trans
    164 	entrypoint
    165 	execmod
    166 	open
    167 	audit_access
    168 }
    169 
    170 class lnk_file
    171 inherits file
    172 {
    173 	open
    174 	audit_access
    175 	execmod
    176 }
    177 
    178 class chr_file
    179 inherits file
    180 {
    181 	execute_no_trans
    182 	entrypoint
    183 	execmod
    184 	open
    185 	audit_access
    186 }
    187 
    188 class blk_file
    189 inherits file
    190 {
    191 	open
    192 	audit_access
    193 	execmod
    194 }
    195 
    196 class sock_file
    197 inherits file
    198 {
    199 	open
    200 	audit_access
    201 	execmod
    202 }
    203 
    204 class fifo_file
    205 inherits file
    206 {
    207 	open
    208 	audit_access
    209 	execmod
    210 }
    211 
    212 class fd
    213 {
    214 	use
    215 }
    216 
    217 
    218 #
    219 # Define the access vector interpretation for network-related objects.
    220 #
    221 
    222 class socket
    223 inherits socket
    224 
    225 class tcp_socket
    226 inherits socket
    227 {
    228 	connectto
    229 	newconn
    230 	acceptfrom
    231 	node_bind
    232 	name_connect
    233 }
    234 
    235 class udp_socket
    236 inherits socket
    237 {
    238 	node_bind
    239 }
    240 
    241 class rawip_socket
    242 inherits socket
    243 {
    244 	node_bind
    245 }
    246 
    247 class node
    248 {
    249 	tcp_recv
    250 	tcp_send
    251 	udp_recv
    252 	udp_send
    253 	rawip_recv
    254 	rawip_send
    255 	enforce_dest
    256 	dccp_recv
    257 	dccp_send
    258 	recvfrom
    259 	sendto
    260 }
    261 
    262 class netif
    263 {
    264 	tcp_recv
    265 	tcp_send
    266 	udp_recv
    267 	udp_send
    268 	rawip_recv
    269 	rawip_send
    270 	dccp_recv
    271 	dccp_send
    272 	ingress
    273 	egress
    274 }
    275 
    276 class netlink_socket
    277 inherits socket
    278 
    279 class packet_socket
    280 inherits socket
    281 
    282 class key_socket
    283 inherits socket
    284 
    285 class unix_stream_socket
    286 inherits socket
    287 {
    288 	connectto
    289 	newconn
    290 	acceptfrom
    291 }
    292 
    293 class unix_dgram_socket
    294 inherits socket
    295 
    296 #
    297 # Define the access vector interpretation for process-related objects
    298 #
    299 
    300 class process
    301 {
    302 	fork
    303 	transition
    304 	sigchld # commonly granted from child to parent
    305 	sigkill # cannot be caught or ignored
    306 	sigstop # cannot be caught or ignored
    307 	signull # for kill(pid, 0)
    308 	signal  # all other signals
    309 	ptrace
    310 	getsched
    311 	setsched
    312 	getsession
    313 	getpgid
    314 	setpgid
    315 	getcap
    316 	setcap
    317 	share
    318 	getattr
    319 	setexec
    320 	setfscreate
    321 	noatsecure
    322 	siginh
    323 	setrlimit
    324 	rlimitinh
    325 	dyntransition
    326 	setcurrent
    327 	execmem
    328 	execstack
    329 	execheap
    330 	setkeycreate
    331 	setsockcreate
    332 }
    333 
    334 
    335 #
    336 # Define the access vector interpretation for ipc-related objects
    337 #
    338 
    339 class ipc
    340 inherits ipc
    341 
    342 class sem
    343 inherits ipc
    344 
    345 class msgq
    346 inherits ipc
    347 {
    348 	enqueue
    349 }
    350 
    351 class msg
    352 {
    353 	send
    354 	receive
    355 }
    356 
    357 class shm
    358 inherits ipc
    359 {
    360 	lock
    361 }
    362 
    363 
    364 #
    365 # Define the access vector interpretation for the security server.
    366 #
    367 
    368 class security
    369 {
    370 	compute_av
    371 	compute_create
    372 	compute_member
    373 	check_context
    374 	load_policy
    375 	compute_relabel
    376 	compute_user
    377 	setenforce     # was avc_toggle in system class
    378 	setbool
    379 	setsecparam
    380 	setcheckreqprot
    381 	read_policy
    382 }
    383 
    384 
    385 #
    386 # Define the access vector interpretation for system operations.
    387 #
    388 
    389 class system
    390 {
    391 	ipc_info
    392 	syslog_read
    393 	syslog_mod
    394 	syslog_console
    395 	module_request
    396 }
    397 
    398 #
    399 # Define the access vector interpretation for controling capabilies
    400 #
    401 
    402 class capability
    403 {
    404 	# The capabilities are defined in include/linux/capability.h
    405 	# Capabilities >= 32 are defined in the capability2 class.
    406 	# Care should be taken to ensure that these are consistent with
    407 	# those definitions. (Order matters)
    408 
    409 	chown
    410 	dac_override
    411 	dac_read_search
    412 	fowner
    413 	fsetid
    414 	kill
    415 	setgid
    416 	setuid
    417 	setpcap
    418 	linux_immutable
    419 	net_bind_service
    420 	net_broadcast
    421 	net_admin
    422 	net_raw
    423 	ipc_lock
    424 	ipc_owner
    425 	sys_module
    426 	sys_rawio
    427 	sys_chroot
    428 	sys_ptrace
    429 	sys_pacct
    430 	sys_admin
    431 	sys_boot
    432 	sys_nice
    433 	sys_resource
    434 	sys_time
    435 	sys_tty_config
    436 	mknod
    437 	lease
    438 	audit_write
    439 	audit_control
    440 	setfcap
    441 }
    442 
    443 class capability2
    444 {
    445 	mac_override	# unused by SELinux
    446 	mac_admin	# unused by SELinux
    447 	syslog
    448 	wake_alarm
    449 	block_suspend
    450 }
    451 
    452 #
    453 # Define the access vector interpretation for controlling
    454 # changes to passwd information.
    455 #
    456 class passwd
    457 {
    458 	passwd	# change another user passwd
    459 	chfn	# change another user finger info
    460 	chsh	# change another user shell
    461 	rootok  # pam_rootok check (skip auth)
    462 	crontab # crontab on another user
    463 }
    464 
    465 #
    466 # SE-X Windows stuff
    467 #
    468 class x_drawable
    469 {
    470 	create
    471 	destroy
    472 	read
    473 	write
    474 	blend
    475 	getattr
    476 	setattr
    477 	list_child
    478 	add_child
    479 	remove_child
    480 	list_property
    481 	get_property
    482 	set_property
    483 	manage
    484 	override
    485 	show
    486 	hide
    487 	send
    488 	receive
    489 }
    490 
    491 class x_screen
    492 {
    493 	getattr
    494 	setattr
    495 	hide_cursor
    496 	show_cursor
    497 	saver_getattr
    498 	saver_setattr
    499 	saver_hide
    500 	saver_show
    501 }
    502 
    503 class x_gc
    504 {
    505 	create
    506 	destroy
    507 	getattr
    508 	setattr
    509 	use
    510 }
    511 
    512 class x_font
    513 {
    514 	create
    515 	destroy
    516 	getattr
    517 	add_glyph
    518 	remove_glyph
    519 	use
    520 }
    521 
    522 class x_colormap
    523 {
    524 	create
    525 	destroy
    526 	read
    527 	write
    528 	getattr
    529 	add_color
    530 	remove_color
    531 	install
    532 	uninstall
    533 	use
    534 }
    535 
    536 class x_property
    537 {
    538 	create
    539 	destroy
    540 	read
    541 	write
    542 	append
    543 	getattr
    544 	setattr
    545 }
    546 
    547 class x_selection
    548 {
    549 	read
    550 	write
    551 	getattr
    552 	setattr
    553 }
    554 
    555 class x_cursor
    556 {
    557 	create
    558 	destroy
    559 	read
    560 	write
    561 	getattr
    562 	setattr
    563 	use
    564 }
    565 
    566 class x_client
    567 {
    568 	destroy
    569 	getattr
    570 	setattr
    571 	manage
    572 }
    573 
    574 class x_device
    575 inherits x_device
    576 
    577 class x_server
    578 {
    579 	getattr
    580 	setattr
    581 	record
    582 	debug
    583 	grab
    584 	manage
    585 }
    586 
    587 class x_extension
    588 {
    589 	query
    590 	use
    591 }
    592 
    593 class x_resource
    594 {
    595 	read
    596 	write
    597 }
    598 
    599 class x_event
    600 {
    601 	send
    602 	receive
    603 }
    604 
    605 class x_synthetic_event
    606 {
    607 	send
    608 	receive
    609 }
    610 
    611 #
    612 # Extended Netlink classes
    613 #
    614 class netlink_route_socket
    615 inherits socket
    616 {
    617 	nlmsg_read
    618 	nlmsg_write
    619 }
    620 
    621 class netlink_firewall_socket
    622 inherits socket
    623 {
    624 	nlmsg_read
    625 	nlmsg_write
    626 }
    627 
    628 class netlink_tcpdiag_socket
    629 inherits socket
    630 {
    631 	nlmsg_read
    632 	nlmsg_write
    633 }
    634 
    635 class netlink_nflog_socket
    636 inherits socket
    637 
    638 class netlink_xfrm_socket
    639 inherits socket
    640 {
    641 	nlmsg_read
    642 	nlmsg_write
    643 }
    644 
    645 class netlink_selinux_socket
    646 inherits socket
    647 
    648 class netlink_audit_socket
    649 inherits socket
    650 {
    651 	nlmsg_read
    652 	nlmsg_write
    653 	nlmsg_relay
    654 	nlmsg_readpriv
    655 	nlmsg_tty_audit
    656 }
    657 
    658 class netlink_ip6fw_socket
    659 inherits socket
    660 {
    661 	nlmsg_read
    662 	nlmsg_write
    663 }
    664 
    665 class netlink_dnrt_socket
    666 inherits socket
    667 
    668 # Define the access vector interpretation for controlling
    669 # access and communication through the D-BUS messaging
    670 # system.
    671 #
    672 class dbus
    673 {
    674 	acquire_svc
    675 	send_msg
    676 }
    677 
    678 # Define the access vector interpretation for controlling
    679 # access through the name service cache daemon (nscd).
    680 #
    681 class nscd
    682 {
    683 	getpwd
    684 	getgrp
    685 	gethost
    686 	getstat
    687 	admin
    688 	shmempwd
    689 	shmemgrp
    690 	shmemhost
    691 	getserv
    692 	shmemserv
    693 }
    694 
    695 # Define the access vector interpretation for controlling
    696 # access to IPSec network data by association
    697 #
    698 class association
    699 {
    700 	sendto
    701 	recvfrom
    702 	setcontext
    703 	polmatch
    704 }
    705 
    706 # Updated Netlink class for KOBJECT_UEVENT family.
    707 class netlink_kobject_uevent_socket
    708 inherits socket
    709 
    710 class appletalk_socket
    711 inherits socket
    712 
    713 class packet
    714 {
    715 	send
    716 	recv
    717 	relabelto
    718 	flow_in		# deprecated
    719 	flow_out	# deprecated
    720 	forward_in
    721 	forward_out
    722 }
    723 
    724 class key
    725 {
    726 	view
    727 	read
    728 	write
    729 	search
    730 	link
    731 	setattr
    732 	create
    733 }
    734 
    735 class context
    736 {
    737 	translate
    738 	contains
    739 }
    740 
    741 class dccp_socket
    742 inherits socket
    743 {
    744 	node_bind
    745 	name_connect
    746 }
    747 
    748 class memprotect
    749 {
    750 	mmap_zero
    751 }
    752 
    753 class db_database
    754 inherits database
    755 {
    756 	access
    757 	install_module
    758 	load_module
    759 	get_param	# deprecated
    760 	set_param	# deprecated
    761 }
    762 
    763 class db_table
    764 inherits database
    765 {
    766 	use		# deprecated
    767 	select
    768 	update
    769 	insert
    770 	delete
    771 	lock
    772 }
    773 
    774 class db_procedure
    775 inherits database
    776 {
    777 	execute
    778 	entrypoint
    779 	install
    780 }
    781 
    782 class db_column
    783 inherits database
    784 {
    785 	use		# deprecated
    786 	select
    787 	update
    788 	insert
    789 }
    790 
    791 class db_tuple
    792 {
    793 	relabelfrom
    794 	relabelto
    795 	use		# deprecated
    796 	select
    797 	update
    798 	insert
    799 	delete
    800 }
    801 
    802 class db_blob
    803 inherits database
    804 {
    805 	read
    806 	write
    807 	import
    808 	export
    809 }
    810 
    811 # network peer labels
    812 class peer
    813 {
    814 	recv
    815 }
    816 
    817 class x_application_data
    818 {
    819 	paste
    820 	paste_after_confirm
    821 	copy
    822 }
    823 
    824 class kernel_service
    825 {
    826 	use_as_override
    827 	create_files_as
    828 }
    829 
    830 class tun_socket
    831 inherits socket
    832 
    833 class x_pointer
    834 inherits x_device
    835 
    836 class x_keyboard
    837 inherits x_device
    838 
    839 class db_schema
    840 inherits database
    841 {
    842 	search
    843 	add_name
    844 	remove_name
    845 }
    846 
    847 class db_view
    848 inherits database
    849 {
    850 	expand
    851 }
    852 
    853 class db_sequence
    854 inherits database
    855 {
    856 	get_value
    857 	next_value
    858 	set_value
    859 }
    860 
    861 class db_language
    862 inherits database
    863 {
    864 	implement
    865 	execute
    866 }
    867 
    868 class binder
    869 {
    870 	impersonate
    871 	call
    872 	set_context_mgr
    873 	transfer
    874 }
    875 
    876 class zygote
    877 {
    878 	specifyids
    879 	specifyrlimits
    880 	specifycapabilities
    881 	specifyinvokewith
    882 	specifyseinfo
    883 }
    884 
    885 class property_service
    886 {
    887 	set
    888 }
    889