我正在编写一个posix compliment shell脚本,除其他外,它将克隆一个git存储库,然后在存储库中执行一个脚本(与存储库一起克隆)。
例如:
git clone git@github.com:torvalds/linux.git
cd linux
./Kconfig
这个想法是人们会用它来做好事,而不是邪恶,但你知道....所以我真的想阻止人们做一个像这样的行:
rm -rf /
在剧本里面。
或者可能是一些不那么邪恶的东西:
rm -rf ../../
我是否有可能以某种方式更改脚本的权限(在克隆之后),以便它只能修改克隆存储库中的内容?
答案 0 :(得分:1)
基本上,您的问题的答案是chroot
命令,它允许您锁定目录中的进程,就像它是根目录一样。 chroot
需要root权限才能设置,但有一些替代实现,例如schroot
,fakechroot
或proot
。由于所有文件系统访问(也读取)都受到限制,因此您需要将脚本需要运行的任何内容交付到chrooted环境中。如何方便地取决于你的发行。
这并不一定意味着它非常安全,因为它只提供文件系统隔离。