如何解决如何更改通过Bazel生成的二进制文件的所有权?
假设我有一个根据以下规则生成的二进制文件:
cc_binary(
name = "script",srcs = ["script.c"],)
然后我在测试中使用此二进制文件:
cc_test(
name = "test",srcs = ["test.cc"],data = [":script"],)
我的问题是:是否可以通过baem本身更改二进制文件的所有权(chown root:root
和权限(chmod +s
)?
二进制文件包含一些只能由root用户执行的命令,因此需要更改所有权和权限。
解决方法
平台测试在沙盒中运行。详细信息取决于您的操作系统,要传递给bazel的标志以及哪个bazel版本。 tags = ["requires-fakeroot"]
(在您的cc_test
上)是要求沙盒实现以root用户身份运行测试的方法。如文档所述This is only supported on Linux.
。
该标记导致测试在其namespace中以root用户身份运行。这意味着它可以做root可以做的许多事情(创建suid根文件,挂载,配置网络设备等),但是对命名空间以外的任何影响(例如,它无法关闭计算机)都不会。
您提到的权限将使文件setuid root。普通用户不能这样做,因为那样的话,您可以复制bash suid root,然后运行它并成为root。这意味着如果要生成setuid根文件,则需要以root身份运行构建,这不是运行bazel的常用方法。如果您只是想在目标系统上创建setuid根文件,我将使用pkg_tar将文件打包在tarball中,并使用mode = "6555"
将其设置为uid。默认所有者已经是0.0
,也就是root。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。