在smack安全模块的内核文档中,它是这样写的:“如果一个目录被标记为transmuting (SMACK64TRANSMUTE=TRUE),并且允许进程在该目录中创建对象的访问规则包含't‘访问,则分配给新对象的标签将是目录的访问,而不是创建过程。这使得两个具有不同标签的进程更容易共享数据,而不授予对其所有文件的访问权限。”
有人能举个例子,说明如何为共享的目录和文件或其他资源设置规则和权限吗?
我正在阅读关于tizen三域安全模型的文章,其中很难理解的主题是/run目录。特别是关于System::Run标签:“用户域具有完整的、可转换到此标签的访问权限。在我的桌面系统中,/run目录只包含根用户拥有的东西。用户进程如何拥有对它的写访问权?还是“完全访问”并不意味着拥有写入权限?
发布于 2017-01-15 16:22:05
Smack中的Transmute特性解决了两个应用程序以不同的Smack规则在一个目录中共享数据的问题。首先,两个应用程序都需要写('w')和执行('x')访问目录的标签,以便能够写入目录。但是要创建的文件将具有创建它们的过程的Smack标签。如果两个应用程序之一想要访问另一个应用程序创建的目录中的文件,则需要访问另一个应用程序的标签。
为了解决这个问题,Smack提供了可转换特性。需要分两部分:
这将启用transmute,影响该目录中新创建的文件的Smack标签。其中一个应用程序创建的每个文件现在都将得到目录的Smack标签,而不是创建它的进程的Smack标签。而在该目录中创建的每个子目录也将获得transmute属性。
让我举一个例子:
# mkdir /tmp/test
# chsmack -a dir_label /tmp/test
# chsmack /tmp/test
/tmp/test access="dir_label"
# echo "process_label dir_label wx" | smackload
# echo process_label >/proc/self/attr/current在目录/tmp/test的标签为"dir_label“和当前的shell运行标签为"process_label”的情况下,让我们看看新的文件和目录将如何标记:
# touch /tmp/test/file1
# mkdir /tmp/test/dir1
# chsmack /tmp/test/file1 /tmp/test/dir1
/tmp/test/file1 access="process_label"
/tmp/test/dir1 access="process_label"让我们启用转换:
# chsmack -t /tmp/test
# chsmack /tmp/test
/tmp/test/ access="dir_label" transmute="TRUE"
# echo "process_label dir_label wxt" | smackload和在行动中的转变:
# touch /tmp/test/file2
# mkdir /tmp/test/dir2
# chsmack /tmp/test/file2 /tmp/test/dir2
/tmp/test/file2 access="dir_label"
/tmp/test/dir2 access="dir_label" transmute="TRUE"https://security.stackexchange.com/questions/141929
复制相似问题