| 145 | | template(`userdom_ro_home_template',` |
|---|
| 146 | | gen_require(` |
|---|
| 147 | | attribute home_type, home_dir_type, $1_file_type; |
|---|
| 148 | | ') |
|---|
| 149 | | |
|---|
| 150 | | # type for contents of home directory |
|---|
| 151 | | type $1_home_t, $1_file_type, home_type; |
|---|
| 152 | | files_type($1_home_t) |
|---|
| 153 | | files_associate_tmp($1_home_t) |
|---|
| 154 | | fs_associate_tmpfs($1_home_t) |
|---|
| 155 | | files_mountpoint($1_home_t) |
|---|
| 156 | | |
|---|
| 157 | | # type of home directory |
|---|
| 158 | | type $1_home_dir_t, home_dir_type, home_type; |
|---|
| 159 | | files_type($1_home_dir_t) |
|---|
| 160 | | files_mountpoint($1_home_dir_t) |
|---|
| 161 | | files_associate_tmp($1_home_dir_t) |
|---|
| 162 | | fs_associate_tmpfs($1_home_dir_t) |
|---|
| 163 | | files_poly_member($1_home_dir_t) |
|---|
| 164 | | |
|---|
| 165 | | ############################## |
|---|
| 166 | | # |
|---|
| 167 | | # User home directory file rules |
|---|
| 168 | | # |
|---|
| 169 | | |
|---|
| 170 | | allow $1_file_type $1_home_t:filesystem associate; |
|---|
| 171 | | |
|---|
| 172 | | # Rules used to associate a homedir as a mountpoint |
|---|
| 173 | | allow $1_home_t self:filesystem associate; |
|---|
| | 149 | interface(`userdom_ro_home_role',` |
|---|
| | 150 | gen_require(` |
|---|
| | 151 | type user_home_t, user_home_dir_t; |
|---|
| | 152 | ') |
|---|
| | 153 | |
|---|
| | 154 | role $1 types { user_home_t user_home_dir_t }; |
|---|
| 181 | | allow $1_t $1_home_dir_t:dir list_dir_perms; |
|---|
| 182 | | allow $1_t $1_home_t:dir list_dir_perms; |
|---|
| 183 | | allow $1_t $1_home_t:file entrypoint; |
|---|
| 184 | | read_files_pattern($1_t,{ $1_home_t $1_home_dir_t },$1_home_t) |
|---|
| 185 | | read_lnk_files_pattern($1_t,{ $1_home_t $1_home_dir_t },$1_home_t) |
|---|
| 186 | | read_fifo_files_pattern($1_t,{ $1_home_t $1_home_dir_t },$1_home_t) |
|---|
| 187 | | read_sock_files_pattern($1_t,{ $1_home_t $1_home_dir_t },$1_home_t) |
|---|
| 188 | | files_list_home($1_t) |
|---|
| | 164 | allow $2 user_home_dir_t:dir list_dir_perms; |
|---|
| | 165 | allow $2 user_home_t:dir list_dir_perms; |
|---|
| | 166 | allow $2 user_home_t:file entrypoint; |
|---|
| | 167 | read_files_pattern($2, { user_home_t user_home_dir_t }, user_home_t) |
|---|
| | 168 | read_lnk_files_pattern($2, { user_home_t user_home_dir_t }, user_home_t) |
|---|
| | 169 | read_fifo_files_pattern($2, { user_home_t user_home_dir_t }, user_home_t) |
|---|
| | 170 | read_sock_files_pattern($2, { user_home_t user_home_dir_t }, user_home_t) |
|---|
| | 171 | files_list_home($2) |
|---|
| 235 | | template(`userdom_manage_home_template',` |
|---|
| 236 | | gen_require(` |
|---|
| 237 | | attribute home_type, home_dir_type, $1_file_type; |
|---|
| 238 | | ') |
|---|
| 239 | | |
|---|
| 240 | | # type for contents of home directory |
|---|
| 241 | | type $1_home_t, $1_file_type, home_type; |
|---|
| 242 | | files_type($1_home_t) |
|---|
| 243 | | files_associate_tmp($1_home_t) |
|---|
| 244 | | fs_associate_tmpfs($1_home_t) |
|---|
| 245 | | |
|---|
| 246 | | # type of home directory |
|---|
| 247 | | type $1_home_dir_t, home_dir_type, home_type; |
|---|
| 248 | | files_type($1_home_dir_t) |
|---|
| 249 | | files_associate_tmp($1_home_dir_t) |
|---|
| 250 | | fs_associate_tmpfs($1_home_dir_t) |
|---|
| 251 | | |
|---|
| 252 | | ############################## |
|---|
| 253 | | # |
|---|
| 254 | | # User home directory file rules |
|---|
| 255 | | # |
|---|
| 256 | | |
|---|
| 257 | | allow $1_file_type $1_home_t:filesystem associate; |
|---|
| 258 | | |
|---|
| 259 | | # Rules used to associate a homedir as a mountpoint |
|---|
| 260 | | allow $1_home_t self:filesystem associate; |
|---|
| | 222 | interface(`userdom_manage_home_role',` |
|---|
| | 223 | gen_require(` |
|---|
| | 224 | type user_home_t, user_home_dir_t; |
|---|
| | 225 | ') |
|---|
| | 226 | |
|---|
| | 227 | role $1 types { user_home_t user_home_dir_t }; |
|---|
| 268 | | allow $1_t $1_home_t:file entrypoint; |
|---|
| 269 | | manage_dirs_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 270 | | manage_files_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 271 | | manage_lnk_files_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 272 | | manage_sock_files_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 273 | | manage_fifo_files_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 274 | | relabel_dirs_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 275 | | relabel_files_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 276 | | relabel_lnk_files_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 277 | | relabel_sock_files_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 278 | | relabel_fifo_files_pattern($1_t,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| 279 | | filetrans_pattern($1_t,$1_home_dir_t,$1_home_t,{ dir file lnk_file sock_file fifo_file }) |
|---|
| 280 | | files_list_home($1_t) |
|---|
| | 238 | allow $2 user_home_t:file entrypoint; |
|---|
| | 239 | manage_dirs_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 240 | manage_files_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 241 | manage_lnk_files_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 242 | manage_sock_files_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 243 | manage_fifo_files_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 244 | relabel_dirs_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 245 | relabel_files_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 246 | relabel_lnk_files_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 247 | relabel_sock_files_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 248 | relabel_fifo_files_pattern($2, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 249 | filetrans_pattern($2, user_home_dir_t, user_home_t, { dir file lnk_file sock_file fifo_file }) |
|---|
| | 250 | files_list_home($2) |
|---|
| 321 | | template(`userdom_exec_home_template',` |
|---|
| 322 | | can_exec($1_t,$1_home_t) |
|---|
| 323 | | |
|---|
| 324 | | tunable_policy(`use_nfs_home_dirs',` |
|---|
| 325 | | fs_exec_nfs_files($1_t) |
|---|
| 326 | | ') |
|---|
| 327 | | |
|---|
| 328 | | tunable_policy(`use_samba_home_dirs',` |
|---|
| 329 | | fs_exec_cifs_files($1_t) |
|---|
| 330 | | ') |
|---|
| | 294 | interface(`userdom_manage_tmp_role',` |
|---|
| | 295 | gen_require(` |
|---|
| | 296 | type user_tmp_t; |
|---|
| | 297 | ') |
|---|
| | 298 | |
|---|
| | 299 | role $1 types user_tmp_t; |
|---|
| | 300 | |
|---|
| | 301 | files_poly_member_tmp($2, user_tmp_t) |
|---|
| | 302 | |
|---|
| | 303 | manage_dirs_pattern($2, user_tmp_t, user_tmp_t) |
|---|
| | 304 | manage_files_pattern($2, user_tmp_t, user_tmp_t) |
|---|
| | 305 | manage_lnk_files_pattern($2, user_tmp_t, user_tmp_t) |
|---|
| | 306 | manage_sock_files_pattern($2, user_tmp_t, user_tmp_t) |
|---|
| | 307 | manage_fifo_files_pattern($2, user_tmp_t, user_tmp_t) |
|---|
| | 308 | files_tmp_filetrans($2, user_tmp_t, { dir file lnk_file sock_file fifo_file }) |
|---|
| | 309 | # role transition |
|---|
| 346 | | template(`userdom_poly_home_template',` |
|---|
| 347 | | type_member $1_t $1_home_dir_t:dir $1_home_dir_t; |
|---|
| 348 | | files_poly($1_home_dir_t) |
|---|
| 349 | | files_poly_parent($1_home_dir_t) |
|---|
| 350 | | files_poly_parent($1_home_t) |
|---|
| 351 | | files_poly_member($1_home_t) |
|---|
| | 323 | interface(`userdom_exec_user_tmp_files',` |
|---|
| | 324 | gen_require(` |
|---|
| | 325 | type user_tmp_t; |
|---|
| | 326 | ') |
|---|
| | 327 | |
|---|
| | 328 | exec_files_pattern($1, user_tmp_t, user_tmp_t) |
|---|
| | 329 | files_search_tmp($1) |
|---|
| 356 | | ## The template for full access to the temporary directories. |
|---|
| 357 | | ## </summary> |
|---|
| 358 | | ## <desc> |
|---|
| 359 | | ## <p> |
|---|
| 360 | | ## The template for full access to the temporary directories. |
|---|
| 361 | | ## This creates a derived type for the user |
|---|
| 362 | | ## temporary type. Execute access is not given. |
|---|
| 363 | | ## </p> |
|---|
| 364 | | ## </desc> |
|---|
| 365 | | ## <param name="userdomain_prefix"> |
|---|
| 366 | | ## <summary> |
|---|
| 367 | | ## The prefix of the user domain (e.g., user |
|---|
| 368 | | ## is the prefix for user_t). |
|---|
| 369 | | ## </summary> |
|---|
| 370 | | ## </param> |
|---|
| 371 | | ## <rolebase/> |
|---|
| 372 | | # |
|---|
| 373 | | template(`userdom_manage_tmp_template',` |
|---|
| 374 | | gen_require(` |
|---|
| 375 | | attribute $1_file_type; |
|---|
| 376 | | ') |
|---|
| 377 | | |
|---|
| 378 | | type $1_tmp_t, $1_file_type; |
|---|
| 379 | | files_tmp_file($1_tmp_t) |
|---|
| 380 | | |
|---|
| 381 | | manage_dirs_pattern($1_t,$1_tmp_t,$1_tmp_t) |
|---|
| 382 | | manage_files_pattern($1_t,$1_tmp_t,$1_tmp_t) |
|---|
| 383 | | manage_lnk_files_pattern($1_t,$1_tmp_t,$1_tmp_t) |
|---|
| 384 | | manage_sock_files_pattern($1_t,$1_tmp_t,$1_tmp_t) |
|---|
| 385 | | manage_fifo_files_pattern($1_t,$1_tmp_t,$1_tmp_t) |
|---|
| 386 | | files_tmp_filetrans($1_t, $1_tmp_t, { dir file lnk_file sock_file fifo_file }) |
|---|
| 387 | | ') |
|---|
| 388 | | |
|---|
| 389 | | ####################################### |
|---|
| 390 | | ## <summary> |
|---|
| 391 | | ## The template for execute access to the user temporary files. |
|---|
| 392 | | ## </summary> |
|---|
| 393 | | ## <param name="userdomain_prefix"> |
|---|
| 394 | | ## <summary> |
|---|
| 395 | | ## The prefix of the user domain (e.g., user |
|---|
| 396 | | ## is the prefix for user_t). |
|---|
| 397 | | ## </summary> |
|---|
| 398 | | ## </param> |
|---|
| 399 | | ## <rolebase/> |
|---|
| 400 | | # |
|---|
| 401 | | template(`userdom_exec_tmp_template',` |
|---|
| 402 | | exec_files_pattern($1_t,$1_tmp_t,$1_tmp_t) |
|---|
| 403 | | ') |
|---|
| 404 | | |
|---|
| 405 | | ####################################### |
|---|
| 406 | | ## <summary> |
|---|
| 407 | | ## The template for a polyinstantiated temporary directory. |
|---|
| 408 | | ## </summary> |
|---|
| 409 | | ## <param name="userdomain_prefix"> |
|---|
| 410 | | ## <summary> |
|---|
| 411 | | ## The prefix of the user domain (e.g., user |
|---|
| 412 | | ## is the prefix for user_t). |
|---|
| 413 | | ## </summary> |
|---|
| 414 | | ## </param> |
|---|
| 415 | | ## <rolebase/> |
|---|
| 416 | | # |
|---|
| 417 | | template(`userdom_poly_tmp_template',` |
|---|
| 418 | | files_poly_member_tmp($1_t,tmp_t) |
|---|
| 419 | | ') |
|---|
| 420 | | |
|---|
| 421 | | ####################################### |
|---|
| 422 | | ## <summary> |
|---|
| 423 | | ## The template for creating a tmpfs type |
|---|
| | 334 | ## Role access for the user tmpfs type |
|---|
| 435 | | ## <param name="userdomain_prefix"> |
|---|
| 436 | | ## <summary> |
|---|
| 437 | | ## The prefix of the user domain (e.g., user |
|---|
| 438 | | ## is the prefix for user_t). |
|---|
| 439 | | ## </summary> |
|---|
| 440 | | ## </param> |
|---|
| 441 | | ## <rolebase/> |
|---|
| 442 | | # |
|---|
| 443 | | template(`userdom_manage_tmpfs_template',` |
|---|
| 444 | | gen_require(` |
|---|
| 445 | | attribute $1_file_type; |
|---|
| 446 | | ') |
|---|
| 447 | | |
|---|
| 448 | | type $1_tmpfs_t, $1_file_type; |
|---|
| 449 | | files_tmpfs_file($1_tmpfs_t) |
|---|
| 450 | | |
|---|
| 451 | | manage_dirs_pattern($1_t,$1_tmpfs_t,$1_tmpfs_t) |
|---|
| 452 | | manage_files_pattern($1_t,$1_tmpfs_t,$1_tmpfs_t) |
|---|
| 453 | | manage_lnk_files_pattern($1_t,$1_tmpfs_t,$1_tmpfs_t) |
|---|
| 454 | | manage_sock_files_pattern($1_t,$1_tmpfs_t,$1_tmpfs_t) |
|---|
| 455 | | manage_fifo_files_pattern($1_t,$1_tmpfs_t,$1_tmpfs_t) |
|---|
| 456 | | fs_tmpfs_filetrans($1_t,$1_tmpfs_t, { dir file lnk_file sock_file fifo_file }) |
|---|
| | 346 | ## <param name="role"> |
|---|
| | 347 | ## <summary> |
|---|
| | 348 | ## Role allowed access. |
|---|
| | 349 | ## </summary> |
|---|
| | 350 | ## </param> |
|---|
| | 351 | ## <param name="domain"> |
|---|
| | 352 | ## <summary> |
|---|
| | 353 | ## Domain allowed access. |
|---|
| | 354 | ## </summary> |
|---|
| | 355 | ## </param> |
|---|
| | 356 | ## <rolecap/> |
|---|
| | 357 | # |
|---|
| | 358 | interface(`userdom_manage_tmpfs_role',` |
|---|
| | 359 | gen_require(` |
|---|
| | 360 | type user_tmpfs_t; |
|---|
| | 361 | ') |
|---|
| | 362 | |
|---|
| | 363 | role $1 types user_tmpfs_t; |
|---|
| | 364 | |
|---|
| | 365 | manage_dirs_pattern($2, user_tmpfs_t, user_tmpfs_t) |
|---|
| | 366 | manage_files_pattern($2, user_tmpfs_t, user_tmpfs_t) |
|---|
| | 367 | manage_lnk_files_pattern($2, user_tmpfs_t, user_tmpfs_t) |
|---|
| | 368 | manage_sock_files_pattern($2, user_tmpfs_t, user_tmpfs_t) |
|---|
| | 369 | manage_fifo_files_pattern($2, user_tmpfs_t, user_tmpfs_t) |
|---|
| | 370 | fs_tmpfs_filetrans($2, user_tmpfs_t, { dir file lnk_file sock_file fifo_file }) |
|---|
| | 371 | # role transition |
|---|
| 499 | | ') |
|---|
| 500 | | |
|---|
| 501 | | ####################################### |
|---|
| 502 | | ## <summary> |
|---|
| 503 | | ## The template allowing the user to execute |
|---|
| 504 | | ## generic programs, such as those found in /bin, |
|---|
| 505 | | ## /sbin, /usr/bin, and /usr/sbin. |
|---|
| 506 | | ## </summary> |
|---|
| 507 | | ## <param name="userdomain_prefix"> |
|---|
| 508 | | ## <summary> |
|---|
| 509 | | ## The prefix of the user domain (e.g., user |
|---|
| 510 | | ## is the prefix for user_t). |
|---|
| 511 | | ## </summary> |
|---|
| 512 | | ## </param> |
|---|
| 513 | | ## <rolebase/> |
|---|
| 514 | | # |
|---|
| 515 | | template(`userdom_exec_generic_pgms_template',` |
|---|
| 516 | | gen_require(` |
|---|
| 517 | | type $1_t; |
|---|
| 518 | | ') |
|---|
| 519 | | |
|---|
| 520 | | corecmd_exec_bin($1_t) |
|---|
| 898 | | userdom_manage_home_template($1) |
|---|
| 899 | | userdom_poly_home_template($1) |
|---|
| 900 | | userdom_poly_tmp_template($1) |
|---|
| 901 | | |
|---|
| 902 | | userdom_manage_tmp_template($1) |
|---|
| 903 | | userdom_manage_tmpfs_template($1) |
|---|
| 904 | | |
|---|
| 905 | | userdom_exec_tmp_template($1) |
|---|
| 906 | | userdom_exec_home_template($1) |
|---|
| | 791 | userdom_manage_home_role($1_r, $1_t) |
|---|
| | 792 | |
|---|
| | 793 | userdom_manage_tmp_role($1_r, $1_t) |
|---|
| | 794 | userdom_manage_tmpfs_role($1_r, $1_t) |
|---|
| | 795 | |
|---|
| | 796 | userdom_exec_user_tmp_files($1_t) |
|---|
| | 797 | userdom_exec_user_home_content_files($1_t) |
|---|
| 2147 | | ## <desc> |
|---|
| 2148 | | ## <p> |
|---|
| 2149 | | ## Execute user home files. |
|---|
| 2150 | | ## </p> |
|---|
| 2151 | | ## <p> |
|---|
| 2152 | | ## This is a templated interface, and should only |
|---|
| 2153 | | ## be called from a per-userdomain template. |
|---|
| 2154 | | ## </p> |
|---|
| 2155 | | ## </desc> |
|---|
| 2156 | | ## <param name="userdomain_prefix"> |
|---|
| 2157 | | ## <summary> |
|---|
| 2158 | | ## The prefix of the user domain (e.g., user |
|---|
| 2159 | | ## is the prefix for user_t). |
|---|
| 2160 | | ## </summary> |
|---|
| 2161 | | ## </param> |
|---|
| 2162 | | ## <param name="domain"> |
|---|
| 2163 | | ## <summary> |
|---|
| 2164 | | ## Domain allowed access. |
|---|
| 2165 | | ## </summary> |
|---|
| 2166 | | ## </param> |
|---|
| 2167 | | # |
|---|
| 2168 | | template(`userdom_exec_user_home_content_files',` |
|---|
| 2169 | | gen_require(` |
|---|
| 2170 | | type $1_home_dir_t, $1_home_t; |
|---|
| 2171 | | ') |
|---|
| 2172 | | |
|---|
| 2173 | | files_search_home($2) |
|---|
| 2174 | | exec_files_pattern($2,{ $1_home_dir_t $1_home_t },$1_home_t) |
|---|
| | 2022 | ## <param name="domain"> |
|---|
| | 2023 | ## <summary> |
|---|
| | 2024 | ## Domain allowed access. |
|---|
| | 2025 | ## </summary> |
|---|
| | 2026 | ## </param> |
|---|
| | 2027 | ## <rolecap> |
|---|
| | 2028 | # |
|---|
| | 2029 | interface(`userdom_exec_user_home_content_files',` |
|---|
| | 2030 | gen_require(` |
|---|
| | 2031 | type user_home_dir_t, user_home_t; |
|---|
| | 2032 | ') |
|---|
| | 2033 | |
|---|
| | 2034 | files_search_home($1) |
|---|
| | 2035 | exec_files_pattern($1, { user_home_dir_t user_home_t }, user_home_t) |
|---|
| | 2036 | |
|---|
| | 2037 | tunable_policy(`use_nfs_home_dirs',` |
|---|
| | 2038 | fs_exec_nfs_files($1) |
|---|
| | 2039 | ') |
|---|
| | 2040 | |
|---|
| | 2041 | tunable_policy(`use_samba_home_dirs',` |
|---|
| | 2042 | fs_exec_cifs_files($1) |
|---|
| | 2043 | ') |
|---|