Changeset 2708

Show
Ignore:
Timestamp:
06/05/08 22:15:56 (6 months ago)
Author:
cpebenito
Message:

rbacsep: more xserver collapsing.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/rbacsep/policy/modules/services/xserver.if

    r2675 r2708  
    502502 
    503503        xserver_common_x_domain_template($1,$1,$2) 
     504') 
     505 
     506interface(`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 }; 
    504565') 
    505566 
  • branches/rbacsep/policy/modules/services/xserver.te

    r2706 r2708  
    6868type property_xevent_t, xevent_type; 
    6969type remote_xclient_t; 
     70type rootwindow_t, rootwindow_type; 
    7071type screensaver_xext_t, xextension_type; 
    7172type security_xext_t, xextension_type; 
     
    138139type xserver_t, x_server_domain; 
    139140type xserver_exec_t; 
    140 domain_type(xserver_t) 
    141 domain_entry_file(xserver_t, xserver_exec_t) 
     141xserver_common_x_domain_template(xdm,xdm,xdm_t) 
     142init_system_domain(xserver_t, xserver_exec_t) 
    142143 
    143144type xserver_tmp_t; 
     
    153154type xserver_log_t; 
    154155logging_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) 
    159156 
    160157ifdef(`enable_mcs',` 
     
    314311files_pid_filetrans(xdm_t,xdm_var_run_t,{ dir file fifo_file }) 
    315312 
    316 allow xdm_t xdm_xserver_t:process signal; 
    317 allow xdm_t xdm_xserver_t:unix_stream_socket connectto; 
    318  
    319 allow xdm_t xdm_xserver_tmp_t:sock_file rw_sock_file_perms; 
    320 allow xdm_t xdm_xserver_tmp_t:dir { setattr list_dir_perms }; 
     313allow xdm_t xserver_t:process signal; 
     314allow xdm_t xserver_t:unix_stream_socket connectto; 
     315 
     316allow xdm_t xserver_tmp_t:sock_file rw_sock_file_perms; 
     317allow xdm_t xserver_tmp_t:dir { setattr list_dir_perms }; 
    321318 
    322319# transition to the xdm xserver 
    323 domtrans_pattern(xdm_t, xserver_exec_t, xdm_xserver_t) 
    324 allow xdm_xserver_t xdm_t:process signal; 
    325 allow xdm_t xdm_xserver_t:process { noatsecure siginh rlimitinh signal sigkill }; 
    326  
    327 allow xdm_t xdm_xserver_t:shm rw_shm_perms; 
     320domtrans_pattern(xdm_t, xserver_exec_t, xserver_t) 
     321allow xserver_t xdm_t:process signal; 
     322allow xdm_t xserver_t:process { noatsecure siginh rlimitinh signal sigkill }; 
     323 
     324allow xdm_t xserver_t:shm rw_shm_perms; 
    328325 
    329326# connect to xdm xserver over stream socket 
    330 stream_connect_pattern(xdm_t,xdm_xserver_tmp_t,xdm_xserver_tmp_t,xdm_xserver_t) 
     327stream_connect_pattern(xdm_t,xserver_tmp_t,xserver_tmp_t,xserver_t) 
    331328 
    332329# Remove /tmp/.X11-unix/X0. 
    333 delete_files_pattern(xdm_t,xdm_xserver_tmp_t,xdm_xserver_tmp_t) 
    334 delete_sock_files_pattern(xdm_t,xdm_xserver_tmp_t,xdm_xserver_tmp_t) 
     330delete_files_pattern(xdm_t,xserver_tmp_t,xserver_tmp_t) 
     331delete_sock_files_pattern(xdm_t,xserver_tmp_t,xserver_tmp_t) 
    335332 
    336333manage_dirs_pattern(xdm_t,xserver_log_t,xserver_log_t) 
     
    470467        # FIXME: 
    471468#       xserver_rw_session_template(xdm,unpriv_userdomain) 
    472 #       dontaudit xdm_xserver_t sysadm_t:shm { unix_read unix_write }; 
    473 #       allow xdm_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; 
    474471') 
    475472 
     
    510507 
    511508optional_policy(` 
     509        resmgr_stream_connect(xdm_t) 
     510') 
     511 
     512optional_policy(` 
    512513        seutil_sigchld_newrole(xdm_t) 
    513514') 
     
    542543') 
    543544 
    544 ######################################## 
    545 # 
    546 # XDM Xserver local policy 
    547 # 
    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 open 
    553 # 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 server 
    570 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 working 
    577 # xdm_xserver_t may no longer have any reason 
    578 # to read ROLE_home_t - examine this in more detail 
    579 # (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; 
    619545        attribute $1_input_xevent_type; 
    620  
    621         type $1_rootwindow_t, rootwindow_type; 
    622546 
    623547######################################## 
     
    650574allow xserver_t self:udp_socket create_socket_perms; 
    651575 
     576domtrans_pattern(xserver_t, xauth_exec_t, xauth_t) 
     577 
     578allow xserver_t xauth_home_t:file { getattr read }; 
     579 
     580# Labeling rules for root windows and colormaps 
     581type_transition xserver_t xserver_t:{ x_drawable x_colormap } rootwindow_t; 
     582 
     583allow xserver_t { rootwindow_t x_domain }:x_drawable send; 
     584 
    652585manage_dirs_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) 
    653586manage_files_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t) 
     
    655588files_tmp_filetrans(xserver_t, xserver_tmp_t, { file dir sock_file }) 
    656589 
    657 filetrans_pattern(xserver_t, xdm_xserver_tmp_t, xserver_tmp_t,sock_file) 
     590filetrans_pattern(xserver_t, xserver_tmp_t, xserver_tmp_t,sock_file) 
    658591 
    659592manage_dirs_pattern(xserver_t, xserver_tmpfs_t, xserver_tmpfs_t) 
     
    671604manage_files_pattern(xserver_t, xserver_log_t, xserver_log_t) 
    672605logging_log_filetrans(xserver_t, xserver_log_t,file) 
    673  
    674         # Labeling rules for default windows and colormaps 
    675         type_transition xserver_t xserver_t:{ x_drawable x_colormap } $1_rootwindow_t; 
    676606 
    677607kernel_read_system_state(xserver_t) 
     
    765695seutil_read_default_contexts(xserver_t) 
    766696 
     697userdom_search_user_home_dirs($1,xserver_t) 
     698userdom_use_user_ttys($1,xserver_t) 
     699userdom_setattr_user_ttys($1,xserver_t) 
     700userdom_rw_user_tmpfs_files($1,xserver_t) 
     701 
     702xserver_use_user_fonts($1,xserver_t) 
     703 
    767704ifndef(`distro_redhat',` 
    768705        allow xserver_t self:process { execmem execheap execstack }; 
     
    773710') 
    774711 
    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         ') 
     712tunable_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') 
    800730 
    801731optional_policy(` 
     
    813743 
    814744optional_policy(` 
     745        unconfined_domain_noaudit(xserver_t) 
     746        unconfined_domtrans(xserver_t) 
     747') 
     748 
     749optional_policy(` 
     750        userhelper_search_config(xserver_t) 
     751') 
     752 
     753optional_policy(` 
    815754        xfs_stream_connect(xserver_t) 
    816755') 
    817756 
    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 
     764allow xserver_t xdm_t:process { signal getpgid }; 
     765allow 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!!! 
     769allow xserver_t xdm_var_lib_t:file { getattr read }; 
     770dontaudit xserver_t xdm_var_lib_t:dir search; 
     771 
     772allow xserver_t xdm_var_run_t:file { getattr read }; 
     773 
     774# Label pid and temporary files with derived types. 
     775manage_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) 
     776manage_lnk_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) 
     777manage_sock_files_pattern(xserver_t, xdm_tmp_t, xdm_tmp_t) 
     778 
     779# Run xkbcomp. 
     780allow xserver_t xkb_var_lib_t:lnk_file read; 
     781can_exec(xserver_t, xkb_var_lib_t) 
     782 
     783# VNC v4 module in X server 
     784corenet_tcp_bind_vnc_port(xserver_t) 
     785 
     786init_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?) 
     792userdom_read_unpriv_users_home_content_files(xserver_t) 
     793 
     794xserver_use_all_users_fonts(xserver_t) 
     795 
     796tunable_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 
     802tunable_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 
     808optional_policy(` 
     809        rhgb_rw_shm(xserver_t) 
     810        rhgb_rw_tmpfs_files(xserver_t) 
     811') 
    862812 
    863813        ############################## 
     
    867817 
    868818        # 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; 
    899822 
    900823        xserver_common_x_domain_template($1,$1,$2) 
     
    921844 
    922845ifdef(`TODO',` 
    923 # Need to further investigate these permissions and 
    924 # 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 /usr 
    929 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  
    937846tunable_policy(`allow_polyinstantiation',` 
    938847# xdm needs access for linking .X11-unix to poly /tmp 
     
    947856# 
    948857allow xdm_t user_home_type:file unlink; 
    949 # 
    950 # Should fix exec of pam_timestamp_check is not closing xdm file descriptor 
    951 # 
    952 allow pam_t xdm_t:fifo_file { getattr ioctl write }; 
    953858') dnl end TODO