背景
Linux的mount命令的context相关选项,可以在挂载文件系统时指定文件系统及其上文件的安全上下文。
context选项
context选项可以在挂载时指定文件系统和文件系统上的文件的安全上下文。挂载成功后,文件系统和其上所有的文件的安全上下文都是context后面指定的值,如下所示,/log目录下的所以文件/目录的安全上下文都是system_u:object_r:log_t
mount /dev/sda1 /log -o rw,context=system_u:object_r:log_t
context选项不支持文件扩展属性,即使设备上的文件已经预设置了安全上下文,当使用context选项后,文件系统上所有的文件都会被强制使用context指定的安全上下文,预设置的扩展属性(即文件安全上下文)也会被覆盖。当使用context选项挂载了文件系统后,type_transition策略将失效,所有在该文件系统上创建的文件都会默认使用context选项指定的安全上下文。
defcontext选项
某些场景下,我们并不希望整个分区的安全上下文都是同一种,某些特别的文件需要分配特殊的安全上下文,这个时候context选项无法满足我们的要求,我们可以使用defcontext选项。使用defcontext选项挂载文件系统时,不会将设备上文件预设置的安全上下文覆盖,同时type_transition可以继续生效,前提是挂载的文件系统类型本身需要支持扩展属性(文件安全上下文是一种扩展属性)。
mount /dev/sda1 /log -o rw,defcontext=system_u:object_r:log_t