我正在尝试制作一个chroot,沙盒构建环境,它在继续构建应用程序之前从Git checkout创建。其中一个要求是执行git checkout和调用构建的开发人员不需要在主机上拥有管理员权限。
unshare -r chroot
工作正常 - 除了没有/ proc这意味着许多standeard东西不会工作。 创建/ proc的各种方法我发现mount需要sudo权限。
Docker这样做但是开发人员必须处于“docker”组中,这有效地为他们提供了不受控制的root访问权限 - 然后给予他们sudo权限。
我找到了“proot”进行某种仿真来做到这一点。然而,这会有一些性能损失。
答案 0 :(得分:0)
您还需要一个安装命名空间,该命名空间将使您能够执行递归绑定安装(以及没有子安装的普通绑定安装)。 <script>
function addRow(imgURL) {
const carddiv = document.createElement('carddiv');
carddiv.className = 'card';
carddiv.style = "width: 18rem;"
carddiv.innerHTML = `
<img src="`+ imgURL +`" class="card-img-top home-card-image-restrict" alt="...">
<div class="card-body">
<h5 style="text-align: center;" class="card-title">Marli</h5>
<button type="button" class="btn btn-secondary btn-lg btn-block">See Gallery</button>
</div>
</div>
`;
document.getElementById('displayCards').appendChild(carddiv);
}
</script>
<?php
$files = scandir('images/Marli');
foreach($files as $file) {
echo $file, "<br>";
echo '<script type="text/javascript">addRow(', $file, ');</script>';
}
?>
和挂载tmpfs的功能,因此请使用pivot_root
。
使用pid名称空间,您还可以挂载procfs的新实例。
答案 1 :(得分:0)
我最终使用了bubblewrap(bwrap)。对于使用ttys的一些事情,我不得不让它与伪uid 0一起运行。
如果我现在应该这样做,我会使用Podman。