Changeset 2708
- Timestamp:
- 06/05/08 22:15:56 (6 months ago)
- Files:
-
- branches/rbacsep/policy/modules/services/xserver.if (modified) (1 diff)
- branches/rbacsep/policy/modules/services/xserver.te (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/rbacsep/policy/modules/services/xserver.if
r2675 r2708 502 502 503 503 xserver_common_x_domain_template($1,$1,$2) 504 ') 505 506 interface(`xserver_role',` 507 domtrans_pattern($2, xserver_exec_t, xserver_t) 508 allow xserver_t $2:process signal; 509 510 allow xserver_t $2:shm rw_shm_perms; 511 512 manage_dirs_pattern($2, user_fonts_t, user_fonts_t) 513 manage_files_pattern($2, user_fonts_t, user_fonts_t) 514 relabel_dirs_pattern($2, user_fonts_t, user_fonts_t) 515 relabel_files_pattern($2, user_fonts_t, user_fonts_t) 516 517 manage_dirs_pattern($2, user_fonts_cache_t, user_fonts_cache_t) 518 manage_files_pattern($2, user_fonts_cache_t, user_fonts_cache_t) 519 relabel_dirs_pattern($2, user_fonts_cache_t, user_fonts_cache_t) 520 relabel_files_pattern($2, user_fonts_cache_t, user_fonts_cache_t) 521 522 manage_dirs_pattern($2, user_fonts_config_t, user_fonts_config_t) 523 manage_files_pattern($2, user_fonts_config_t, user_fonts_config_t) 524 relabel_dirs_pattern($2, user_fonts_config_t, user_fonts_config_t) 525 relabel_files_pattern($2, user_fonts_config_t, user_fonts_config_t) 526 527 stream_connect_pattern($2, xserver_tmp_t, xserver_tmp_t, xserver_t) 528 529 allow $2 xserver_tmpfs_t:file rw_file_perms; 530 531 # Communicate via System V shared memory. 532 allow xserver_t $2:shm rw_shm_perms; 533 allow $2 xserver_t:shm rw_shm_perms; 534 535 ############################## 536 # 537 # User X object manager local policy 538 # 539 540 # manage: xhost X11:ChangeHosts 541 # freeze: metacity X11:GrabKey 542 # force_cursor: metacity X11:GrabPointer 543 allow $2 xserver_t:x_device { manage freeze force_cursor }; 544 545 # gnome-settings-daemon XKEYBOARD:SetControls 546 allow $2 xserver_t:x_server manage; 547 548 # gnome-settings-daemon RANDR:SelectInput 549 allow $2 xserver_t:x_resource write; 550 551 # metacity X11:InstallColormap X11:UninstallColormap 552 allow $2 rootwindow_t:x_colormap { install uninstall }; 553 554 # read: gnome-settings-daemon RANDR:GetScreenSizeRange 555 # write: gnome-settings-daemon RANDR:SelectInput 556 # setattr: gnome-settings-daemon X11:GrabKey 557 # manage: metacity X11:ChangeWindowAttributes 558 allow $2 rootwindow_t:x_drawable { read write manage setattr }; 559 560 # setattr: metacity X11:InstallColormap 561 allow $2 xserver_t:x_screen { saver_getattr saver_setattr setattr }; 562 563 # xrdb X11:ChangeProperty prop=RESOURCE_MANAGER 564 allow $2 info_xproperty_t:x_property { create append write }; 504 565 ') 505 566 branches/rbacsep/policy/modules/services/xserver.te
r2706 r2708 68 68 type property_xevent_t, xevent_type; 69 69 type remote_xclient_t; 70 type rootwindow_t, rootwindow_type; 70 71 type screensaver_xext_t, xextension_type; 71 72 type security_xext_t, xextension_type; … … 138 139 type xserver_t, x_server_domain; 139 140 type xserver_exec_t; 140 domain_type(xserver_t)141 domain_entry_file(xserver_t, xserver_exec_t)141 xserver_common_x_domain_template(xdm,xdm,xdm_t) 142 init_system_domain(xserver_t, xserver_exec_t) 142 143 143 144 type xserver_tmp_t; … … 153 154 type xserver_log_t; 154 155 logging_log_file(xserver_log_t) 155 156 xserver_common_domain_template(xdm)157 xserver_common_x_domain_template(xdm,xdm,xdm_t)158 init_system_domain(xdm_xserver_t,xserver_exec_t)159 156 160 157 ifdef(`enable_mcs',` … … 314 311 files_pid_filetrans(xdm_t,xdm_var_run_t,{ dir file fifo_file }) 315 312 316 allow xdm_t x dm_xserver_t:process signal;317 allow xdm_t x dm_xserver_t:unix_stream_socket connectto;318 319 allow xdm_t x dm_xserver_tmp_t:sock_file rw_sock_file_perms;320 allow xdm_t x dm_xserver_tmp_t:dir { setattr list_dir_perms };313 allow xdm_t xserver_t:process signal; 314 allow xdm_t xserver_t:unix_stream_socket connectto; 315 316 allow xdm_t xserver_tmp_t:sock_file rw_sock_file_perms; 317 allow xdm_t xserver_tmp_t:dir { setattr list_dir_perms }; 321 318 322 319 # transition to the xdm xserver 323 domtrans_pattern(xdm_t, xserver_exec_t, x dm_xserver_t)324 allow x dm_xserver_t xdm_t:process signal;325 allow xdm_t x dm_xserver_t:process { noatsecure siginh rlimitinh signal sigkill };326 327 allow xdm_t x dm_xserver_t:shm rw_shm_perms;320 domtrans_pattern(xdm_t, xserver_exec_t, xserver_t) 321 allow xserver_t xdm_t:process signal; 322 allow xdm_t xserver_t:process { noatsecure siginh rlimitinh signal sigkill }; 323 324 allow xdm_t xserver_t:shm rw_shm_perms; 328 325 329 326 # connect to xdm xserver over stream socket 330 stream_connect_pattern(xdm_t,x dm_xserver_tmp_t,xdm_xserver_tmp_t,xdm_xserver_t)327 stream_connect_pattern(xdm_t,xserver_tmp_t,xserver_tmp_t,xserver_t) 331 328 332 329 # Remove /tmp/.X11-unix/X0. 333 delete_files_pattern(xdm_t,x dm_xserver_tmp_t,xdm_xserver_tmp_t)334 delete_sock_files_pattern(xdm_t,x dm_xserver_tmp_t,xdm_xserver_tmp_t)330 delete_files_pattern(xdm_t,xserver_tmp_t,xserver_tmp_t) 331 delete_sock_files_pattern(xdm_t,xserver_tmp_t,xserver_tmp_t) 335 332 336 333 manage_dirs_pattern(xdm_t,xserver_log_t,xserver_log_t) … … 470 467 # FIXME: 471 468 # xserver_rw_session_template(xdm,unpriv_userdomain) 472 # dontaudit x dm_xserver_t sysadm_t:shm { unix_read unix_write };473 # allow x dm_xserver_t xdm_tmpfs_t:file rw_file_perms;469 # dontaudit xserver_t sysadm_t:shm { unix_read unix_write }; 470 # allow xserver_t xdm_tmpfs_t:file rw_file_perms; 474 471 ') 475 472 … … 510 507 511 508 optional_policy(` 509 resmgr_stream_connect(xdm_t) 510 ') 511 512 optional_policy(` 512 513 seutil_sigchld_newrole(xdm_t) 513 514 ') … … 542 543 ') 543 544 544 ########################################545 #546 # XDM Xserver local policy547 #548 549 allow xdm_xserver_t xdm_t:process { signal getpgid };550 allow xdm_xserver_t xdm_t:shm rw_shm_perms;551 552 # NB we do NOT allow xdm_xserver_t xdm_var_lib_t:dir, only access to an open553 # handle of a file inside the dir!!!554 allow xdm_xserver_t xdm_var_lib_t:file { getattr read };555 dontaudit xdm_xserver_t xdm_var_lib_t:dir search;556 557 allow xdm_xserver_t xdm_var_run_t:file { getattr read };558 559 # Label pid and temporary files with derived types.560 manage_files_pattern(xdm_xserver_t,xdm_tmp_t,xdm_tmp_t)561 manage_lnk_files_pattern(xdm_xserver_t,xdm_tmp_t,xdm_tmp_t)562 manage_sock_files_pattern(xdm_xserver_t,xdm_tmp_t,xdm_tmp_t)563 564 # Run xkbcomp.565 allow xdm_xserver_t xkb_var_lib_t:lnk_file read;566 can_exec(xdm_xserver_t, xkb_var_lib_t)567 files_search_var_lib(xdm_xserver_t)568 569 # VNC v4 module in X server570 corenet_tcp_bind_vnc_port(xdm_xserver_t)571 572 fs_search_auto_mountpoints(xdm_xserver_t)573 574 init_use_fds(xdm_xserver_t)575 576 # FIXME: After per user fonts are properly working577 # xdm_xserver_t may no longer have any reason578 # to read ROLE_home_t - examine this in more detail579 # (xauth?)580 userdom_read_unpriv_users_home_content_files(xdm_xserver_t)581 582 xserver_use_all_users_fonts(xdm_xserver_t)583 584 tunable_policy(`use_nfs_home_dirs',`585 fs_manage_nfs_dirs(xdm_xserver_t)586 fs_manage_nfs_files(xdm_xserver_t)587 fs_manage_nfs_symlinks(xdm_xserver_t)588 ')589 590 tunable_policy(`use_samba_home_dirs',`591 fs_manage_cifs_dirs(xdm_xserver_t)592 fs_manage_cifs_files(xdm_xserver_t)593 fs_manage_cifs_symlinks(xdm_xserver_t)594 ')595 596 optional_policy(`597 resmgr_stream_connect(xdm_t)598 ')599 600 optional_policy(`601 rhgb_rw_shm(xdm_xserver_t)602 rhgb_rw_tmpfs_files(xdm_xserver_t)603 ')604 605 optional_policy(`606 unconfined_domain_noaudit(xdm_xserver_t)607 unconfined_domtrans(xdm_xserver_t)608 609 ifndef(`distro_redhat',`610 allow xdm_xserver_t self:process { execheap execmem };611 ')612 613 ifdef(`distro_rhel4',`614 allow xdm_xserver_t self:process { execheap execmem };615 ')616 ')617 618 attribute $1_x_domain;619 545 attribute $1_input_xevent_type; 620 621 type $1_rootwindow_t, rootwindow_type;622 546 623 547 ######################################## … … 650 574 allow xserver_t self:udp_socket create_socket_perms; 651 575 576 domtrans_pattern(xserver_t, xauth_exec_t, xauth_t) 577 578 allow xserver_t xauth_home_t:file { getattr read }; 579 580 # Labeling rules for root windows and colormaps 581 type_transition xserver_t xserver_t:{ x_drawable x_colormap } rootwindow_t; 582 583 allow xserver_t { rootwindow_t x_domain }:x_drawable send; 584 652 585 manage_dirs_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) 653 586 manage_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) … … 655 588 files_tmp_filetrans(xserver_t, xserver_tmp_t, { file dir sock_file }) 656 589 657 filetrans_pattern(xserver_t, x dm_xserver_tmp_t, xserver_tmp_t,sock_file)590 filetrans_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t,sock_file) 658 591 659 592 manage_dirs_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t) … … 671 604 manage_files_pattern(xserver_t, xserver_log_t, xserver_log_t) 672 605 logging_log_filetrans(xserver_t, xserver_log_t,file) 673 674 # Labeling rules for default windows and colormaps675 type_transition xserver_t xserver_t:{ x_drawable x_colormap } $1_rootwindow_t;676 606 677 607 kernel_read_system_state(xserver_t) … … 765 695 seutil_read_default_contexts(xserver_t) 766 696 697 userdom_search_user_home_dirs($1,xserver_t) 698 userdom_use_user_ttys($1,xserver_t) 699 userdom_setattr_user_ttys($1,xserver_t) 700 userdom_rw_user_tmpfs_files($1,xserver_t) 701 702 xserver_use_user_fonts($1,xserver_t) 703 767 704 ifndef(`distro_redhat',` 768 705 allow xserver_t self:process { execmem execheap execstack }; … … 773 710 ') 774 711 775 tunable_policy(`!xserver_object_manager',` 776 # should be xserver_unconfined(xserver_t), 777 # but typeattribute doesnt work in conditionals 778 gen_require(` 779 attribute x_server_domain, x_domain; 780 attribute xproperty_type, xselection_type; 781 attribute xextension_type, xevent_type; 782 attribute rootwindow_type; 783 784 type remote_xclient_t; 785 ') 786 allow xserver_t x_server_domain:x_server *; 787 allow xserver_t { x_domain rootwindow_type }:x_drawable *; 788 allow xserver_t x_server_domain:x_screen *; 789 allow xserver_t x_domain:x_gc *; 790 allow xserver_t { x_domain rootwindow_type }:x_colormap *; 791 allow xserver_t xproperty_type:x_property *; 792 allow xserver_t xselection_type:x_selection *; 793 allow xserver_t x_domain:x_cursor *; 794 allow xserver_t { x_domain remote_xclient_t }:x_client *; 795 allow xserver_t { x_domain x_server_domain }:x_device *; 796 allow xserver_t xextension_type:x_extension *; 797 allow xserver_t { x_domain x_server_domain }:x_resource *; 798 allow xserver_t xevent_type:{ x_event x_synthetic_event } *; 799 ') 712 tunable_policy(`!xserver_object_manager',` 713 # should be xserver_unconfined(xserver_t), 714 # but typeattribute doesnt work in conditionals 715 716 allow xserver_t x_server_domain:x_server *; 717 allow xserver_t { x_domain rootwindow_type }:x_drawable *; 718 allow xserver_t x_server_domain:x_screen *; 719 allow xserver_t x_domain:x_gc *; 720 allow xserver_t { x_domain rootwindow_type }:x_colormap *; 721 allow xserver_t xproperty_type:x_property *; 722 allow xserver_t xselection_type:x_selection *; 723 allow xserver_t x_domain:x_cursor *; 724 allow xserver_t { x_domain remote_xclient_t }:x_client *; 725 allow xserver_t { x_domain x_server_domain }:x_device *; 726 allow xserver_t xextension_type:x_extension *; 727 allow xserver_t { x_domain x_server_domain }:x_resource *; 728 allow xserver_t xevent_type:{ x_event x_synthetic_event } *; 729 ') 800 730 801 731 optional_policy(` … … 813 743 814 744 optional_policy(` 745 unconfined_domain_noaudit(xserver_t) 746 unconfined_domtrans(xserver_t) 747 ') 748 749 optional_policy(` 750 userhelper_search_config(xserver_t) 751 ') 752 753 optional_policy(` 815 754 xfs_stream_connect(xserver_t) 816 755 ') 817 756 818 ############################## 819 # 820 # $1_xserver_t Local policy 821 # 822 823 domtrans_pattern(xserver_t, xauth_exec_t, xauth_t) 824 825 allow xserver_t xauth_home_t:file { getattr read }; 826 827 domtrans_pattern($2, xserver_exec_t, xserver_t) 828 allow xserver_t $2:process signal; 829 830 allow xserver_t $2:shm rw_shm_perms; 831 832 manage_dirs_pattern($2, user_fonts_t, user_fonts_t) 833 manage_files_pattern($2, user_fonts_t, user_fonts_t) 834 relabel_dirs_pattern($2, user_fonts_t, user_fonts_t) 835 relabel_files_pattern($2, user_fonts_t, user_fonts_t) 836 837 manage_dirs_pattern($2, user_fonts_config_t, user_fonts_config_t) 838 manage_files_pattern($2, user_fonts_config_t, user_fonts_config_t) 839 relabel_files_pattern($2, user_fonts_config_t, user_fonts_config_t) 840 841 # For startup relabel 842 allow $2 user_fonts_cache_t:{ dir file } { relabelto relabelfrom }; 843 844 stream_connect_pattern($2, $1_xserver_tmp_t, $1_xserver_tmp_t, $1_xserver_t) 845 846 allow $2 $1_xserver_tmpfs_t:file rw_file_perms; 847 848 # Communicate via System V shared memory. 849 allow $1_xserver_t $2:shm rw_shm_perms; 850 allow $2 $1_xserver_t:shm rw_shm_perms; 851 852 userdom_search_user_home_dirs($1,$1_xserver_t) 853 userdom_use_user_ttys($1,$1_xserver_t) 854 userdom_setattr_user_ttys($1,$1_xserver_t) 855 userdom_rw_user_tmpfs_files($1,$1_xserver_t) 856 857 xserver_use_user_fonts($1,$1_xserver_t) 858 859 optional_policy(` 860 userhelper_search_config($1_xserver_t) 861 ') 757 ######################################## 758 # 759 # XDM Xserver local policy 760 # 761 # cjp: when xdm is configurable via tunable these 762 # rules will be enabled only when xdm is enabled 763 764 allow xserver_t xdm_t:process { signal getpgid }; 765 allow xserver_t xdm_t:shm rw_shm_perms; 766 767 # NB we do NOT allow xserver_t xdm_var_lib_t:dir, only access to an open 768 # handle of a file inside the dir!!! 769 allow xserver_t xdm_var_lib_t:file { getattr read }; 770 dontaudit xserver_t xdm_var_lib_t:dir search; 771 772 allow xserver_t xdm_var_run_t:file { getattr read }; 773 774 # Label pid and temporary files with derived types. 775 manage_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) 776 manage_lnk_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) 777 manage_sock_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) 778 779 # Run xkbcomp. 780 allow xserver_t xkb_var_lib_t:lnk_file read; 781 can_exec(xserver_t, xkb_var_lib_t) 782 783 # VNC v4 module in X server 784 corenet_tcp_bind_vnc_port(xserver_t) 785 786 init_use_fds(xserver_t) 787 788 # FIXME: After per user fonts are properly working 789 # xserver_t may no longer have any reason 790 # to read ROLE_home_t - examine this in more detail 791 # (xauth?) 792 userdom_read_unpriv_users_home_content_files(xserver_t) 793 794 xserver_use_all_users_fonts(xserver_t) 795 796 tunable_policy(`use_nfs_home_dirs',` 797 fs_manage_nfs_dirs(xserver_t) 798 fs_manage_nfs_files(xserver_t) 799 fs_manage_nfs_symlinks(xserver_t) 800 ') 801 802 tunable_policy(`use_samba_home_dirs',` 803 fs_manage_cifs_dirs(xserver_t) 804 fs_manage_cifs_files(xserver_t) 805 fs_manage_cifs_symlinks(xserver_t) 806 ') 807 808 optional_policy(` 809 rhgb_rw_shm(xserver_t) 810 rhgb_rw_tmpfs_files(xserver_t) 811 ') 862 812 863 813 ############################## … … 867 817 868 818 # Device rules 869 allow $1_x_domain xserver_t:x_device { read getattr use setattr setfocus grab bell }; 870 871 allow $1_xserver_t { input_xevent_t $1_input_xevent_type }:x_event send; 872 allow $1_xserver_t { $1_rootwindow_t $1_x_domain }:x_drawable send; 873 874 # manage: xhost X11:ChangeHosts 875 # freeze: metacity X11:GrabKey 876 # force_cursor: metacity X11:GrabPointer 877 allow $2 xserver_t:x_device { manage freeze force_cursor }; 878 879 # gnome-settings-daemon XKEYBOARD:SetControls 880 allow $2 xserver_t:x_server manage; 881 882 # gnome-settings-daemon RANDR:SelectInput 883 allow $2 xserver_t:x_resource write; 884 885 # metacity X11:InstallColormap X11:UninstallColormap 886 allow $2 $1_rootwindow_t:x_colormap { install uninstall }; 887 888 # read: gnome-settings-daemon RANDR:GetScreenSizeRange 889 # write: gnome-settings-daemon RANDR:SelectInput 890 # setattr: gnome-settings-daemon X11:GrabKey 891 # manage: metacity X11:ChangeWindowAttributes 892 allow $2 $1_rootwindow_t:x_drawable { read write manage setattr }; 893 894 # setattr: metacity X11:InstallColormap 895 allow $2 xserver_t:x_screen { saver_setattr saver_getattr setattr }; 896 897 # xrdb X11:ChangeProperty prop=RESOURCE_MANAGER 898 allow $2 info_xproperty_t:x_property { create write append }; 819 allow x_domain xserver_t:x_device { read getattr use setattr setfocus grab bell }; 820 821 allow xserver_t { input_xevent_t $1_input_xevent_type }:x_event send; 899 822 900 823 xserver_common_x_domain_template($1,$1,$2) … … 921 844 922 845 ifdef(`TODO',` 923 # Need to further investigate these permissions and924 # perhaps define derived types.925 allow xdm_t var_lib_t:dir { write search add_name remove_name create unlink };926 allow xdm_t var_lib_t:file { create write unlink };927 928 # Do not audit attempts to write to index files under /usr929 dontaudit xdm_t usr_t:file write;930 931 ifdef(`rhgb.te', `932 allow xdm_xserver_t ramfs_t:dir rw_dir_perms;933 allow xdm_xserver_t ramfs_t:file manage_file_perms;934 allow rhgb_t xdm_xserver_t:process signal;935 ')936 937 846 tunable_policy(`allow_polyinstantiation',` 938 847 # xdm needs access for linking .X11-unix to poly /tmp … … 947 856 # 948 857 allow xdm_t user_home_type:file unlink; 949 #950 # Should fix exec of pam_timestamp_check is not closing xdm file descriptor951 #952 allow pam_t xdm_t:fifo_file { getattr ioctl write };953 858 ') dnl end TODO
