2016-02-13 41 views
0

我正在寫一個posix恭維外殼腳本,其中包括克隆git存儲庫,然後在存儲庫內執行一個腳本(與存儲庫一起克隆)。允許shell腳本修改只包含目錄

例如:

git clone [email protected]:torvalds/linux.git
cd linux
./Kconfig

的想法是,人們會使用它的好,不是邪惡的,但你知道....所以我真的想停止從做人們把這樣一行:

rm -rf /

腳本內。
或許什麼惡略少,如:

rm -rf ../../

是否有可能,我以某種方式改變腳本的權限(克隆之後),因此它是唯一能夠修改克隆的倉庫裏面的東西?

+1

well rm -rf /真的取決於運行該命令的用戶的權限,通常用戶將無法刪除/和udnerlying的目錄 –

+0

Docker容器也許? –

+0

您可以使用[schroot](http://linux.die.net/man/1/schroot)設置chroot環境。這樣,'rm -rf /'不會刪除文件系統的根目錄,而是刪除chroot jail的根目錄。 – kba

回答

1

基本上,您的問題的答案是chroot命令,該命令允許您鎖定目錄中的進程,就好像它是根目錄一樣。 chroot需要root權限才能設置,但還有其他替代實現,例如schroot,fakechrootproot。由於所有文件系統訪問權限(也被讀取)都受到限制,因此您需要將腳本需要運行的任何內容交給chrooted環境。如何做到這一點方便取決於你的分佈。

這並不一定意味着它是完全安全的,因爲它只提供文件系統隔離。