我正在尝试将用户帐户沙箱化,使其无法编辑或查看特定文件夹(即/home/user/test
.该帐户将编译并运行一个 C++ 程序,该程序可以使系统接受任何命令,并且不能以任何方式修改或编辑系统。
这意味着禁用su
和sudo
,从该用户的整个系统中删除写入(和一些读取)权限,并将程序锁定(监禁)在其自己的文件夹中。我还缺少什么吗?
现在进行实施。
我相信我可以通过分别输入和来找到su
和的位置。例如,我可以发现二进制文件位于:sudo
whereis su
whereis sudo
sudo
/usr/bin/sudo /usr/lib/sudo /usr/bin/X11/sudo /usr/share/man/man8/sudo.8.gz
如果我更改这些二进制文件的权限以禁止该用户执行,是否会阻止sudo
通过其他方式(例如在其他编程语言中)进行操作?
对于将程序“监禁”在某个文件夹内,似乎是chroot
无效的,特别是当程序需要访问沙盒文件夹之外的其他资源时。那么,最好的方法是什么?
答案1
最好找到您需要包含在 chroot 中的内容,而不是发现您忘记了某些可用作后门的程序。您只需从 chrooted 结构下链接到所需的材料即可。以及您在第一次编译运行时发现的任何您忽略的内容。
自 2000 年以来,每当我有此要求时,我都会使用虚拟机进行此类编译。不用担心这样的帐户会做什么,也不用担心系统上的其他活动(软件安装等)可能会破坏编译过程。在升级之前很容易制作快照等。为此,虚拟机在速度下降方面的开销是非常小的代价。