Files

如何使腳本只能訪問某些文件?

  • March 14, 2022

假設我有一個腳本remove.sh

rm -r "$1"

我希望這個腳本能夠只刪除文件夾內的東西,而不能刪除~/Desktop/A其他任何地方。

所以,當我執行時./remove.sh ~/Desktop/A/file1它應該是成功的,但是,當我執行時./remove.sh ~/.bashrc,它應該是失敗的。

這個問題的目的是防止一些隨機腳本做一些危險的事情,比如在我的主目錄中刪除一些東西。

這不是 UNIX 文件權限的工作方式:權限授予使用者(或使用者組),而不是單個程序(這是有道理的,因為否則您需要做的就是複製程序,而不是它的限制)。

因此,您可以通過創建一個新使用者繞道而行,您可以執行該程序,您授予誰(使用經典的 UNIX 所有者/組權限或 ACL)對文件夾的權限(而不是還有很多)。

但老實說,您正在解決一些倒退的問題:無論以這個不同的使用者身份啟動腳本,都可以通過不以該使用者身份啟動它來再次規避禁令。

您可以編寫一個 SELinux 模組來禁止取消任何沒有特定 SELinux 上下文的連結,但是,嗯,這很複雜,並且出於與上述完全相同的原因,很容易規避。

因此,如果啟動程序的使用者有權刪除內容,則“無法…”將不起作用。無論您要解決什麼問題,您都可能需要為它尋找一個完全不同的架構!

引用自:https://unix.stackexchange.com/questions/694398