在 go 中生成的构建具有与父目录不同的 SELinux 上下文

问题描述 投票:0回答:1

在我的

/home/backend
目录下,有多个Golang项目。

我用过

sudo semanage fcontext -a -t bin_t "/home/backend(/.*)?"

sudo restorecon -Rv /home/backend

将所有目录及其子目录/文件的默认上下文设置为“bin_t”。手动创建的任何新文件(使用文本编辑器)的上下文都设置为

bin_t
但是,每当我运行
go build
创建构建时,新生成的构建的上下文都会设置为
user_tmp_t
。根据 this,新创建的文件应该与父文件具有相同的上下文,因此它应该是 bin_t

为什么会出现这种情况?

linux go selinux
1个回答
0
投票

此处所述,转换优先于继承。

所以我猜测有一个过渡匹配。 可能是那些(不确定):

$ grep user_tmp_t /etc/selinux/targeted/contexts/files/file_contexts.homedirs
/home/[^/]+/tmp -d  unconfined_u:object_r:user_tmp_t:s0
/home/[^/]+/\.tmp   -d  unconfined_u:object_r:user_tmp_t:s0
/run/user/[0-9]+    -d  unconfined_u:object_r:user_tmp_t:s0
/tmp/gconfd-[^/]+   -d  unconfined_u:object_r:user_tmp_t:s0

如果您不希望您的主目录继承这种 user home 目录规则,我建议您应该为您的应用程序使用专用路径。 像

/opt/backend
这样的东西可能是合适的。 (如果有
backend
用户,则将其设为
backend
用户的家)

© www.soinside.com 2019 - 2024. All rights reserved.