允许shell脚本仅修改包含目录

时间:2016-02-13 11:29:29

标签: bash unix posix zsh dash-shell

我正在编写一个posix compliment shell脚本,除其他外,它将克隆一个git存储库,然后在存储库中执行一个脚本(与存储库一起克隆)。

例如:

git clone git@github.com:torvalds/linux.git
cd linux
./Kconfig

这个想法是人们会用它来做好事,而不是邪恶,但你知道....所以我真的想阻止人们做一个像这样的行:

rm -rf /

在剧本里面。
或者可能是一些不那么邪恶的东西:

rm -rf ../../

我是否有可能以某种方式更改脚本的权限(在克隆之后),以便它只能修改克隆存储库中的内容?

1 个答案:

答案 0 :(得分:1)

基本上,您的问题的答案是chroot命令,它允许您锁定目录中的进程,就像它是根目录一样。 chroot需要root权限才能设置,但有一些替代实现,例如schrootfakechrootproot。由于所有文件系统访问(也读取)都受到限制,因此您需要将脚本需要运行的任何内容交付到chrooted环境中。如何方便地取决于你的发行。

这并不一定意味着它非常安全,因为它只提供文件系统隔离。