Modify *_except interfaces to not have caller supply the "-"
PATCH 5/6 Modify *_except interfaces to not have caller supply the "-"
The *_except interfaces expect the caller to call it like this:files_read_all_dirs_except(foo_t, - bar_t)
This makes the call argument hard to deal with because it is neither a type nor a set. Also an argument like $2 -shadow_t could either be a set or an MLS range.
The *_except interfaces are never used except for in the *_except_shadow interfaces. The calls to the *_except_shadow interfaces never specify a second argument.
files_manage_all_files is called only in portage.te (with no exception) and authlogin.if.
--- policy/modules/kernel/files.if | 92 +++++++++++++++++++++++++++++-------- policy/modules/system/authlogin.if | 10 ++-- 2 files changed, 79 insertions(+), 23 deletions(-)
policy/modules/kernel/files.if +74 -18
@@ -689,7 +689,7 @@ interface(`files_read_all_dirs_except',` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; + allow $1 { file_type - $2 }:dir list_dir_perms; ') ########################################
@@ -714,7 +714,7 @@ interface(`files_read_all_files_except',` attribute file_type; ') - read_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################
@@ -739,7 +739,7 @@ interface(`files_read_all_symlinks_except',` attribute file_type; ') - read_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################
@@ -1026,6 +1026,35 @@ interface(`files_read_all_chr_files',` ######################################## ## <summary> +## Relabel all files on the filesystem +## </summary> +## <param name="domain"> +## <summary> +## The type of the domain perfoming this action. +## </summary> +## </param> +## <rolecap/> +# +interface(`files_relabel_all_files',` + gen_require(` + attribute file_type; + ') + + allow $1 file_type : dir list_dir_perms; + relabel_dirs_pattern($1, file_type, file_type) + relabel_files_pattern($1, file_type, file_type) + relabel_lnk_files_pattern($1, file_type, file_type) + relabel_fifo_files_pattern($1, file_type, file_type) + relabel_sock_files_pattern($1, file_type, file_type) + relabelfrom_blk_files_pattern($1, file_type, file_type) + relabelfrom_chr_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_relabelto_bin_policy($1) +') + +######################################## +## <summary> ## Relabel all files on the filesystem, except ## the listed exceptions. ## </summary>
@@ -1042,21 +1071,21 @@ interface(`files_read_all_chr_files',` ## </param> ## <rolecap/> # -interface(`files_relabel_all_files',` +interface(`files_relabel_all_files_except',` gen_require(` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; - relabel_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + allow $1 { file_type - $2 }:dir list_dir_perms; + relabel_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # this is only relabelfrom since there should be no # device nodes with file types. - relabelfrom_blk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabelfrom_chr_files_pattern($1, { file_type $2 }, { file_type $2 }) + relabelfrom_blk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabelfrom_chr_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_relabelto_bin_policy($1)
@@ -1090,6 +1119,33 @@ interface(`files_rw_all_files',` ######################################## ## <summary> +## Manage all files on the filesystem. +## </summary> +## <param name="domain"> +## <summary> +## The type of the domain perfoming this action. +## </summary> +## </param> +## <rolecap/> +# +interface(`files_manage_all_files',` + gen_require(` + attribute file_type; + ') + + manage_dirs_pattern($1, file_type, file_type) + manage_files_pattern($1, file_type, file_type) + manage_lnk_files_pattern($1, file_type, file_type) + manage_fifo_files_pattern($1, file_type, file_type) + manage_sock_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_create_bin_policy($1) + files_manage_kernel_modules($1) +') + +######################################## +## <summary> ## Manage all files on the filesystem, except ## the listed exceptions. ## </summary>
@@ -1106,16 +1162,16 @@ interface(`files_rw_all_files',` ## </param> ## <rolecap/> # -interface(`files_manage_all_files',` +interface(`files_manage_all_files_except',` gen_require(` attribute file_type; ') - manage_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - manage_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + manage_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_create_bin_policy($1)
policy/modules/system/authlogin.if +5 -5
@@ -1113,7 +1113,7 @@ interface(`auth_read_all_dirs_except_shadow',` type shadow_t; ') - files_read_all_dirs_except($1,$2 -shadow_t) + files_read_all_dirs_except($1, shadow_t) ') ########################################
@@ -1139,7 +1139,7 @@ interface(`auth_read_all_files_except_shadow',` type shadow_t; ') - files_read_all_files_except($1,$2 -shadow_t) + files_read_all_files_except($1, shadow_t) ') ########################################
@@ -1164,7 +1164,7 @@ interface(`auth_read_all_symlinks_except_shadow',` type shadow_t; ') - files_read_all_symlinks_except($1,$2 -shadow_t) + files_read_all_symlinks_except($1, shadow_t) ') ########################################
@@ -1190,7 +1190,7 @@ interface(`auth_relabel_all_files_except_shadow',` type shadow_t; ') - files_relabel_all_files($1,$2 -shadow_t) + files_relabel_all_files_except($1, shadow_t) ') ########################################
@@ -1242,7 +1242,7 @@ interface(`auth_manage_all_files_except_shadow',` type shadow_t; ') - files_manage_all_files($1,$2 -shadow_t) + files_manage_all_files_except($1, shadow_t) ') ########################################
Signature · 2 lines
James Carter <[email protected]> National Security Agency
PATCH 5/6 Modify *_except interfaces to not have caller supply the "-"
Quoted 7 lines · James Carter
The
*_exceptinterfaces expect the caller to call it like this:files_read_all_dirs_except(foo_t, - bar_t)This makes the call argument hard to deal with because it is neither a type nor a set. Also an argument like $2 -shadow_t could either be a set or an MLS range.
Quoted 6 lines
The
*_exceptinterfaces are never used except for in the*_except_shadowinterfaces. The calls to the*_except_shadowinterfaces never specify a second argument.
files_manage_all_filesis called only in portage.te (with no exception) and authlogin.if.
Theres two issues with this change:
1. It breaks API stability.
2. It doesn't work if you want to specify a set, e.g.
files_read_all_dirs_except(foo_t, { bar_t baz_t })
Quoted 210 lines
--- policy/modules/kernel/files.if | 92 +++++++++++++++++++++++++++++-------- policy/modules/system/authlogin.if | 10 ++-- 2 files changed, 79 insertions(+), 23 deletions(-)policy/modules/kernel/files.if +74
-18@@ -689,7 +689,7 @@ interface(`files_read_all_dirs_except',` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; + allow $1 { file_type - $2 }:dir list_dir_perms; ') ########################################@@ -714,7 +714,7 @@ interface(`files_read_all_files_except',` attribute file_type; ') - read_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################@@ -739,7 +739,7 @@ interface(`files_read_all_symlinks_except',` attribute file_type; ') - read_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################@@ -1026,6 +1026,35 @@ interface(`files_read_all_chr_files',` ######################################## ##<summary> +## Relabel all files on the filesystem +##</summary> +##<param name="domain"> +##<summary> +## The type of the domain perfoming this action. +##</summary> +##</param> +##<rolecap/> +# +interface(`files_relabel_all_files',` + gen_require(` + attribute file_type; + ') + + allow $1 file_type : dir list_dir_perms; + relabel_dirs_pattern($1, file_type, file_type) + relabel_files_pattern($1, file_type, file_type) + relabel_lnk_files_pattern($1, file_type, file_type) + relabel_fifo_files_pattern($1, file_type, file_type) + relabel_sock_files_pattern($1, file_type, file_type) + relabelfrom_blk_files_pattern($1, file_type, file_type) + relabelfrom_chr_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_relabelto_bin_policy($1) +') + +######################################## +##<summary> ## Relabel all files on the filesystem, except ## the listed exceptions. ##</summary>@@ -1042,21 +1071,21 @@ interface(`files_read_all_chr_files',` ##</param> ##<rolecap/> # -interface(`files_relabel_all_files',` +interface(`files_relabel_all_files_except',` gen_require(` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; - relabel_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + allow $1 { file_type - $2 }:dir list_dir_perms; + relabel_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # this is only relabelfrom since there should be no # device nodes with file types. - relabelfrom_blk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabelfrom_chr_files_pattern($1, { file_type $2 }, { file_type $2 }) + relabelfrom_blk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabelfrom_chr_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_relabelto_bin_policy($1)@@ -1090,6 +1119,33 @@ interface(`files_rw_all_files',` ######################################## ##<summary> +## Manage all files on the filesystem. +##</summary> +##<param name="domain"> +##<summary> +## The type of the domain perfoming this action. +##</summary> +##</param> +##<rolecap/> +# +interface(`files_manage_all_files',` + gen_require(` + attribute file_type; + ') + + manage_dirs_pattern($1, file_type, file_type) + manage_files_pattern($1, file_type, file_type) + manage_lnk_files_pattern($1, file_type, file_type) + manage_fifo_files_pattern($1, file_type, file_type) + manage_sock_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_create_bin_policy($1) + files_manage_kernel_modules($1) +') + +######################################## +##<summary> ## Manage all files on the filesystem, except ## the listed exceptions. ##</summary>@@ -1106,16 +1162,16 @@ interface(`files_rw_all_files',` ##</param> ##<rolecap/> # -interface(`files_manage_all_files',` +interface(`files_manage_all_files_except',` gen_require(` attribute file_type; ') - manage_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - manage_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + manage_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_create_bin_policy($1)policy/modules/system/authlogin.if +5
-5@@ -1113,7 +1113,7 @@ interface(`auth_read_all_dirs_except_shadow',` type shadow_t; ') - files_read_all_dirs_except($1,$2 -shadow_t) + files_read_all_dirs_except($1, shadow_t) ') ########################################@@ -1139,7 +1139,7 @@ interface(`auth_read_all_files_except_shadow',` type shadow_t; ') - files_read_all_files_except($1,$2 -shadow_t) + files_read_all_files_except($1, shadow_t) ') ########################################@@ -1164,7 +1164,7 @@ interface(`auth_read_all_symlinks_except_shadow',` type shadow_t; ') - files_read_all_symlinks_except($1,$2 -shadow_t) + files_read_all_symlinks_except($1, shadow_t) ') ########################################@@ -1190,7 +1190,7 @@ interface(`auth_relabel_all_files_except_shadow',` type shadow_t; ') - files_relabel_all_files($1,$2 -shadow_t) + files_relabel_all_files_except($1, shadow_t) ') ########################################@@ -1242,7 +1242,7 @@ interface(`auth_manage_all_files_except_shadow',` type shadow_t; ') - files_manage_all_files($1,$2 -shadow_t) + files_manage_all_files_except($1, shadow_t) ') ########################################
Signature · 3 lines
Chris PeBenito Tresys Technology, LLC www.tresys.com | oss.tresys.com
PATCH 5/6 Modify *_except interfaces to not have caller supply the "-"
Quoted 12 lines · Christopher J. PeBenito
Quoted 11 lines · James Carter
The
*_exceptinterfaces expect the caller to call it like this:files_read_all_dirs_except(foo_t, - bar_t)This makes the call argument hard to deal with because it is neither a type nor a set. Also an argument like $2 -shadow_t could either be a set or an MLS range.
The
*_exceptinterfaces are never used except for in the*_except_shadowinterfaces. The calls to the*_except_shadowinterfaces never specify a second argument.
Quoted 6 lines
Quoted 2 lines
files_manage_all_filesis called only in portage.te (with no exception) and authlogin.if.Theres two issues with this change:
1. It breaks API stability.
That may be true, but the current interface makes no sense to me. If I use files_read_all_dirs_except(foo_t, bar_t) the resulting policy allows access to file_type and bar_t. It doesn't exclude anything.
Quoted 4 lines
2. It doesn't work if you want to specify a set, e.g.
files_read_all_dirs_except(foo_t, { bar_t baz_t })
Why doesn't that work? Doesn't that give
{ file_type - { bar_t baz_t } }?
Again, if you don't like the changes, that's fine. It is just something that will have to be worked around. Any changes that you do accept just makes life a easier.
Quoted 212 lines
Quoted 210 lines
--- policy/modules/kernel/files.if | 92 +++++++++++++++++++++++++++++-------- policy/modules/system/authlogin.if | 10 ++-- 2 files changed, 79 insertions(+), 23 deletions(-)policy/modules/kernel/files.if +74
-18@@ -689,7 +689,7 @@ interface(`files_read_all_dirs_except',` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; + allow $1 { file_type - $2 }:dir list_dir_perms; ') ########################################@@ -714,7 +714,7 @@ interface(`files_read_all_files_except',` attribute file_type; ') - read_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################@@ -739,7 +739,7 @@ interface(`files_read_all_symlinks_except',` attribute file_type; ') - read_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################@@ -1026,6 +1026,35 @@ interface(`files_read_all_chr_files',` ######################################## ##<summary> +## Relabel all files on the filesystem +##</summary> +##<param name="domain"> +##<summary> +## The type of the domain perfoming this action. +##</summary> +##</param> +##<rolecap/> +# +interface(`files_relabel_all_files',` + gen_require(` + attribute file_type; + ') + + allow $1 file_type : dir list_dir_perms; + relabel_dirs_pattern($1, file_type, file_type) + relabel_files_pattern($1, file_type, file_type) + relabel_lnk_files_pattern($1, file_type, file_type) + relabel_fifo_files_pattern($1, file_type, file_type) + relabel_sock_files_pattern($1, file_type, file_type) + relabelfrom_blk_files_pattern($1, file_type, file_type) + relabelfrom_chr_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_relabelto_bin_policy($1) +') + +######################################## +##<summary> ## Relabel all files on the filesystem, except ## the listed exceptions. ##</summary>@@ -1042,21 +1071,21 @@ interface(`files_read_all_chr_files',` ##</param> ##<rolecap/> # -interface(`files_relabel_all_files',` +interface(`files_relabel_all_files_except',` gen_require(` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; - relabel_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + allow $1 { file_type - $2 }:dir list_dir_perms; + relabel_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # this is only relabelfrom since there should be no # device nodes with file types. - relabelfrom_blk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabelfrom_chr_files_pattern($1, { file_type $2 }, { file_type $2 }) + relabelfrom_blk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabelfrom_chr_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_relabelto_bin_policy($1)@@ -1090,6 +1119,33 @@ interface(`files_rw_all_files',` ######################################## ##<summary> +## Manage all files on the filesystem. +##</summary> +##<param name="domain"> +##<summary> +## The type of the domain perfoming this action. +##</summary> +##</param> +##<rolecap/> +# +interface(`files_manage_all_files',` + gen_require(` + attribute file_type; + ') + + manage_dirs_pattern($1, file_type, file_type) + manage_files_pattern($1, file_type, file_type) + manage_lnk_files_pattern($1, file_type, file_type) + manage_fifo_files_pattern($1, file_type, file_type) + manage_sock_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_create_bin_policy($1) + files_manage_kernel_modules($1) +') + +######################################## +##<summary> ## Manage all files on the filesystem, except ## the listed exceptions. ##</summary>@@ -1106,16 +1162,16 @@ interface(`files_rw_all_files',` ##</param> ##<rolecap/> # -interface(`files_manage_all_files',` +interface(`files_manage_all_files_except',` gen_require(` attribute file_type; ') - manage_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - manage_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + manage_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_create_bin_policy($1)policy/modules/system/authlogin.if +5
-5@@ -1113,7 +1113,7 @@ interface(`auth_read_all_dirs_except_shadow',` type shadow_t; ') - files_read_all_dirs_except($1,$2 -shadow_t) + files_read_all_dirs_except($1, shadow_t) ') ########################################@@ -1139,7 +1139,7 @@ interface(`auth_read_all_files_except_shadow',` type shadow_t; ') - files_read_all_files_except($1,$2 -shadow_t) + files_read_all_files_except($1, shadow_t) ') ########################################@@ -1164,7 +1164,7 @@ interface(`auth_read_all_symlinks_except_shadow',` type shadow_t; ') - files_read_all_symlinks_except($1,$2 -shadow_t) + files_read_all_symlinks_except($1, shadow_t) ') ########################################@@ -1190,7 +1190,7 @@ interface(`auth_relabel_all_files_except_shadow',` type shadow_t; ') - files_relabel_all_files($1,$2 -shadow_t) + files_relabel_all_files_except($1, shadow_t) ') ########################################@@ -1242,7 +1242,7 @@ interface(`auth_manage_all_files_except_shadow',` type shadow_t; ') - files_manage_all_files($1,$2 -shadow_t) + files_manage_all_files_except($1, shadow_t) ') ########################################
Signature · 2 lines
James Carter <[email protected]> National Security Agency
PATCH 5/6 Modify *_except interfaces to not have caller supply the "-"
Quoted 24 lines · James Carter
Quoted 12 lines · Christopher J. PeBenito
Quoted 11 lines · James Carter
The
*_exceptinterfaces expect the caller to call it like this:files_read_all_dirs_except(foo_t, - bar_t)This makes the call argument hard to deal with because it is neither a type nor a set. Also an argument like $2 -shadow_t could either be a set or an MLS range.
The
*_exceptinterfaces are never used except for in the*_except_shadowinterfaces. The calls to the*_except_shadowinterfaces never specify a second argument.Quoted 6 lines
Quoted 2 lines
files_manage_all_filesis called only in portage.te (with no exception) and authlogin.if.Theres two issues with this change:
1. It breaks API stability.
That may be true, but the current interface makes no sense to me. If I use
files_read_all_dirs_except(foo_t, bar_t)the resulting policy allows access tofile_typeandbar_t. It doesn't exclude anything.
Quoted 6 lines
Quoted 4 lines
2. It doesn't work if you want to specify a set, e.g.
files_read_all_dirs_except(foo_t, { bar_t baz_t })Why doesn't that work? Doesn't that give
{file_type- {bar_tbaz_t} }?
I didn't think that was valid. Is it?
Quoted 3 lines
Again, if you don't like the changes, that's fine. It is just something that will have to be worked around. Any changes that you do accept just makes life a easier.
I'd like to get rid of the interfaces completely. I just haven't come up with a better way of getting { files_type -shadow_t } without breaking encapsulation. Perhaps we just have to rethink the access or concept.
Quoted 213 lines
Quoted 212 lines
Quoted 210 lines
--- policy/modules/kernel/files.if | 92 +++++++++++++++++++++++++++++-------- policy/modules/system/authlogin.if | 10 ++-- 2 files changed, 79 insertions(+), 23 deletions(-)policy/modules/kernel/files.if +74
-18@@ -689,7 +689,7 @@ interface(`files_read_all_dirs_except',` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; + allow $1 { file_type - $2 }:dir list_dir_perms; ') ########################################@@ -714,7 +714,7 @@ interface(`files_read_all_files_except',` attribute file_type; ') - read_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################@@ -739,7 +739,7 @@ interface(`files_read_all_symlinks_except',` attribute file_type; ') - read_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################@@ -1026,6 +1026,35 @@ interface(`files_read_all_chr_files',` ######################################## ##<summary> +## Relabel all files on the filesystem +##</summary> +##<param name="domain"> +##<summary> +## The type of the domain perfoming this action. +##</summary> +##</param> +##<rolecap/> +# +interface(`files_relabel_all_files',` + gen_require(` + attribute file_type; + ') + + allow $1 file_type : dir list_dir_perms; + relabel_dirs_pattern($1, file_type, file_type) + relabel_files_pattern($1, file_type, file_type) + relabel_lnk_files_pattern($1, file_type, file_type) + relabel_fifo_files_pattern($1, file_type, file_type) + relabel_sock_files_pattern($1, file_type, file_type) + relabelfrom_blk_files_pattern($1, file_type, file_type) + relabelfrom_chr_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_relabelto_bin_policy($1) +') + +######################################## +##<summary> ## Relabel all files on the filesystem, except ## the listed exceptions. ##</summary>@@ -1042,21 +1071,21 @@ interface(`files_read_all_chr_files',` ##</param> ##<rolecap/> # -interface(`files_relabel_all_files',` +interface(`files_relabel_all_files_except',` gen_require(` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; - relabel_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + allow $1 { file_type - $2 }:dir list_dir_perms; + relabel_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # this is only relabelfrom since there should be no # device nodes with file types. - relabelfrom_blk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabelfrom_chr_files_pattern($1, { file_type $2 }, { file_type $2 }) + relabelfrom_blk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabelfrom_chr_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_relabelto_bin_policy($1)@@ -1090,6 +1119,33 @@ interface(`files_rw_all_files',` ######################################## ##<summary> +## Manage all files on the filesystem. +##</summary> +##<param name="domain"> +##<summary> +## The type of the domain perfoming this action. +##</summary> +##</param> +##<rolecap/> +# +interface(`files_manage_all_files',` + gen_require(` + attribute file_type; + ') + + manage_dirs_pattern($1, file_type, file_type) + manage_files_pattern($1, file_type, file_type) + manage_lnk_files_pattern($1, file_type, file_type) + manage_fifo_files_pattern($1, file_type, file_type) + manage_sock_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_create_bin_policy($1) + files_manage_kernel_modules($1) +') + +######################################## +##<summary> ## Manage all files on the filesystem, except ## the listed exceptions. ##</summary>@@ -1106,16 +1162,16 @@ interface(`files_rw_all_files',` ##</param> ##<rolecap/> # -interface(`files_manage_all_files',` +interface(`files_manage_all_files_except',` gen_require(` attribute file_type; ') - manage_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - manage_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + manage_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_create_bin_policy($1)policy/modules/system/authlogin.if +5
-5@@ -1113,7 +1113,7 @@ interface(`auth_read_all_dirs_except_shadow',` type shadow_t; ') - files_read_all_dirs_except($1,$2 -shadow_t) + files_read_all_dirs_except($1, shadow_t) ') ########################################@@ -1139,7 +1139,7 @@ interface(`auth_read_all_files_except_shadow',` type shadow_t; ') - files_read_all_files_except($1,$2 -shadow_t) + files_read_all_files_except($1, shadow_t) ') ########################################@@ -1164,7 +1164,7 @@ interface(`auth_read_all_symlinks_except_shadow',` type shadow_t; ') - files_read_all_symlinks_except($1,$2 -shadow_t) + files_read_all_symlinks_except($1, shadow_t) ') ########################################@@ -1190,7 +1190,7 @@ interface(`auth_relabel_all_files_except_shadow',` type shadow_t; ') - files_relabel_all_files($1,$2 -shadow_t) + files_relabel_all_files_except($1, shadow_t) ') ########################################@@ -1242,7 +1242,7 @@ interface(`auth_manage_all_files_except_shadow',` type shadow_t; ') - files_manage_all_files($1,$2 -shadow_t) + files_manage_all_files_except($1, shadow_t) ') ########################################
Signature · 3 lines
Chris PeBenito Tresys Technology, LLC www.tresys.com | oss.tresys.com
PATCH 5/6 Modify *_except interfaces to not have caller supply the "-"
Quoted 25 lines · Christopher J. PeBenito
Quoted 24 lines · James Carter
Quoted 12 lines · Christopher J. PeBenito
Quoted 11 lines · James Carter
The
*_exceptinterfaces expect the caller to call it like this:files_read_all_dirs_except(foo_t, - bar_t)This makes the call argument hard to deal with because it is neither a type nor a set. Also an argument like $2 -shadow_t could either be a set or an MLS range.
The
*_exceptinterfaces are never used except for in the*_except_shadowinterfaces. The calls to the*_except_shadowinterfaces never specify a second argument.Quoted 6 lines
Quoted 2 lines
files_manage_all_filesis called only in portage.te (with no exception) and authlogin.if.Theres two issues with this change:
1. It breaks API stability.
That may be true, but the current interface makes no sense to me. If I use
files_read_all_dirs_except(foo_t, bar_t)the resulting policy allows access tofile_typeandbar_t. It doesn't exclude anything.
Quoted 8 lines
Quoted 6 lines
Quoted 4 lines
2. It doesn't work if you want to specify a set, e.g.
files_read_all_dirs_except(foo_t, { bar_t baz_t })Why doesn't that work? Doesn't that give
{file_type- {bar_tbaz_t} }?I didn't think that was valid. Is it?
You're right. It's not valid. I didn't realize the set expressions were that limited. And I went through all that trouble making sure that my parser could handle arbitrary set expressions.
Quoted 10 lines
Quoted 4 lines
Again, if you don't like the changes, that's fine. It is just something that will have to be worked around. Any changes that you do accept just makes life a easier.
I'd like to get rid of the interfaces completely. I just haven't come up with a better way of getting {
files_type-shadow_t } without breaking encapsulation. Perhaps we just have to rethink the access or concept.
The interfaces are only used in Refpolicy for shadow_t. If special interfaces could be made for shadow_t, while retaining the old ones for compatibility, then at least Refpolicy itself would not have "-shadow_t" as an argument. That would help a bunch.
Quoted 215 lines
Quoted 213 lines
Quoted 212 lines
Quoted 210 lines
--- policy/modules/kernel/files.if | 92 +++++++++++++++++++++++++++++-------- policy/modules/system/authlogin.if | 10 ++-- 2 files changed, 79 insertions(+), 23 deletions(-)policy/modules/kernel/files.if +74
-18@@ -689,7 +689,7 @@ interface(`files_read_all_dirs_except',` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; + allow $1 { file_type - $2 }:dir list_dir_perms; ') ########################################@@ -714,7 +714,7 @@ interface(`files_read_all_files_except',` attribute file_type; ') - read_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################@@ -739,7 +739,7 @@ interface(`files_read_all_symlinks_except',` attribute file_type; ') - read_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) + read_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) ') ########################################@@ -1026,6 +1026,35 @@ interface(`files_read_all_chr_files',` ######################################## ##<summary> +## Relabel all files on the filesystem +##</summary> +##<param name="domain"> +##<summary> +## The type of the domain perfoming this action. +##</summary> +##</param> +##<rolecap/> +# +interface(`files_relabel_all_files',` + gen_require(` + attribute file_type; + ') + + allow $1 file_type : dir list_dir_perms; + relabel_dirs_pattern($1, file_type, file_type) + relabel_files_pattern($1, file_type, file_type) + relabel_lnk_files_pattern($1, file_type, file_type) + relabel_fifo_files_pattern($1, file_type, file_type) + relabel_sock_files_pattern($1, file_type, file_type) + relabelfrom_blk_files_pattern($1, file_type, file_type) + relabelfrom_chr_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_relabelto_bin_policy($1) +') + +######################################## +##<summary> ## Relabel all files on the filesystem, except ## the listed exceptions. ##</summary>@@ -1042,21 +1071,21 @@ interface(`files_read_all_chr_files',` ##</param> ##<rolecap/> # -interface(`files_relabel_all_files',` +interface(`files_relabel_all_files_except',` gen_require(` attribute file_type; ') - allow $1 { file_type $2 }:dir list_dir_perms; - relabel_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabel_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + allow $1 { file_type - $2 }:dir list_dir_perms; + relabel_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabel_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # this is only relabelfrom since there should be no # device nodes with file types. - relabelfrom_blk_files_pattern($1, { file_type $2 }, { file_type $2 }) - relabelfrom_chr_files_pattern($1, { file_type $2 }, { file_type $2 }) + relabelfrom_blk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + relabelfrom_chr_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_relabelto_bin_policy($1)@@ -1090,6 +1119,33 @@ interface(`files_rw_all_files',` ######################################## ##<summary> +## Manage all files on the filesystem. +##</summary> +##<param name="domain"> +##<summary> +## The type of the domain perfoming this action. +##</summary> +##</param> +##<rolecap/> +# +interface(`files_manage_all_files',` + gen_require(` + attribute file_type; + ') + + manage_dirs_pattern($1, file_type, file_type) + manage_files_pattern($1, file_type, file_type) + manage_lnk_files_pattern($1, file_type, file_type) + manage_fifo_files_pattern($1, file_type, file_type) + manage_sock_files_pattern($1, file_type, file_type) + + # satisfy the assertions: + seutil_create_bin_policy($1) + files_manage_kernel_modules($1) +') + +######################################## +##<summary> ## Manage all files on the filesystem, except ## the listed exceptions. ##</summary>@@ -1106,16 +1162,16 @@ interface(`files_rw_all_files',` ##</param> ##<rolecap/> # -interface(`files_manage_all_files',` +interface(`files_manage_all_files_except',` gen_require(` attribute file_type; ') - manage_dirs_pattern($1, { file_type $2 }, { file_type $2 }) - manage_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_lnk_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_fifo_files_pattern($1, { file_type $2 }, { file_type $2 }) - manage_sock_files_pattern($1, { file_type $2 }, { file_type $2 }) + manage_dirs_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_lnk_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_fifo_files_pattern($1, { file_type - $2 }, { file_type - $2 }) + manage_sock_files_pattern($1, { file_type - $2 }, { file_type - $2 }) # satisfy the assertions: seutil_create_bin_policy($1)policy/modules/system/authlogin.if +5
-5@@ -1113,7 +1113,7 @@ interface(`auth_read_all_dirs_except_shadow',` type shadow_t; ') - files_read_all_dirs_except($1,$2 -shadow_t) + files_read_all_dirs_except($1, shadow_t) ') ########################################@@ -1139,7 +1139,7 @@ interface(`auth_read_all_files_except_shadow',` type shadow_t; ') - files_read_all_files_except($1,$2 -shadow_t) + files_read_all_files_except($1, shadow_t) ') ########################################@@ -1164,7 +1164,7 @@ interface(`auth_read_all_symlinks_except_shadow',` type shadow_t; ') - files_read_all_symlinks_except($1,$2 -shadow_t) + files_read_all_symlinks_except($1, shadow_t) ') ########################################@@ -1190,7 +1190,7 @@ interface(`auth_relabel_all_files_except_shadow',` type shadow_t; ') - files_relabel_all_files($1,$2 -shadow_t) + files_relabel_all_files_except($1, shadow_t) ') ########################################@@ -1242,7 +1242,7 @@ interface(`auth_manage_all_files_except_shadow',` type shadow_t; ') - files_manage_all_files($1,$2 -shadow_t) + files_manage_all_files_except($1, shadow_t) ') ########################################
Signature · 2 lines
James Carter <[email protected]> National Security Agency