尝试访问符号链接不允许使用 SELinux type_transition。我的意思是我尝试实现一个方案,其中用户可以访问位于 /usr/bin/ 中的符号链接,并导致二进制文件放置在用户目录的封闭目录中。原始二进制(可执行)文件及其符号链接具有相同的 SELinux 上下文,用户有权执行、读取和其他一些操作(见下文),尽管用户没有原始二进制文件所在目录的访问权限文件所在的位置使用户无法打开或搜索该目录。如果用户输入“seuser_test_libre_writer_two_t”,则此特定应用程序(二进制文件)的策略将如下所示:
policy_module(test, 1.0.0)
require {
type seuser_test_libre_writer_two_t;
class file { getattr relabelto unlink execute append read setattr
write create open rename execute_no_trans entrypoint
ioctl lock };
class dir { getattr relabelfrom relabelto read open setattr write
create rename search rmdir add_name };
class process { transition rlimitinh siginh sigchld noatsecure };
class lnk_file { read getattr };
role seuser_test_libre_writer_two_r;
}
type selinux_object_hw_test_t;
type selinux_file_hw_test_exec_t;
role seuser_test_libre_writer_two_r types selinux_object_hw_test_t;
type_transition seuser_test_libre_writer_two_t
selinux_file_hw_test_exec_t: process
selinux_file_hw_test_exec_t;
allow seuser_test_libre_writer_two_t selinux_file_hw_test_exec_t:
process { transition };
allow selinux_file_hw_test_exec_t selinux_file_hw_test_exec_t: file {
execute read write };
allow seuser_test_libre_writer_two_t selinux_file_hw_test_exec_t: file
{ execute getattr open read };
allow selinux_file_hw_test_exec_t selinux_object_hw_test_t: dir {
search getattr };
allow seuser_test_libre_writer_two_t selinux_file_hw_test_exec_t:
lnk_file { read };
足球俱乐部:
/opt/test -d gen_context(system_u:object_r:selinux_object_hw_test_t)
/usr/bin/hello_world_link -l
gen_context(system_u:object_r:selinux_file_hw_test_exec_t)
/opt/test/hw --
gen_context(system_u:object_r:selinux_file_hw_test_exec_t)
当我尝试运行我的应用程序时,我在 /var/log/audit/audit.log 中遇到了访问拒绝和 avc 要求我授予用户对原始文件所在目录的访问权限。
type=AVC msg=audit(1545644823.820:11488): avc: denied { search } for pid=12976 comm="bash" name="test" dev="dm-0" ino=2102570 scontext=seuser_test_libre_writer_two_u:seuser_test_libre_writer_two_r:seuser_test_libre_writer_two_t:s0 tcontext=system_u:object_r:selinux_object_hw_test_t:s0 tclass=dir
是否可以将 SELinux“type_transition”与符号链接一起使用?
我检查了这些链接“Linux 如何使用符号链接?“,”将文件从一个目录复制到另一个目录时维护文件的 SELinux 标签“,”SELinux:主目录是符号链接,来自主目录中文件的httpd“ 和 ”无法将 SELinux 文件上下文应用于带有符号链接的路径“但它们与问题并不完全相关。
答案1
这是不可能的,您需要创建一个包装器或原始二进制文件的真实副本。