Bash

為什麼我必須使用 sh 從 CD/DVD 介質執行腳本?

  • May 22, 2013

我再次遇到了系統的這種奇怪行為。我正在執行 Debian 6.0.6,直接從 CD/DVD 執行腳本時遇到了一些麻煩。最後我不得不使用:

sh /media/cdrom/command

執行它。不得不求助於 sh 有什麼大不了的?!如果腳本依賴 bash 功能怎麼辦?在我看來,真的很煩人,而且安全性並沒有增加多少

有人知道這種行為的充分理由嗎?

PS:如果您嘗試直接使用 ./… 執行它,您會收到一個錯誤,該錯誤不會暗示該問題的任何提示(文件系統掛載 noexec):

bash: ./media/cdrom/command: No such file or directory

如果你將它作為 bash /media/cdrom/command 執行,你會得到同樣的錯誤(我認為安裝選項的驗證由 bash 驗證,即使對於在命令行上作為參數傳遞的命令也是如此。

永久的解決方案是將 exec 添加到 /etc/fstab 中的掛載選項中,例如:

/dev/scd0       /media/cdrom0   udf,iso9660 user,noauto,exec     0       0

文件系統通常noexec,nosuid預設安裝以提高安全性。因此,即使您在文件集中看到可執行位,核心也會拒絕執行它。interpreter path/to/script通過以您請求系統執行的形式呼叫它interpreter,它反過來接收path/to/script作為參數並對其進行解析,從而繞過文件系統施加的限制(您可能能夠通過編譯的執行檔實現相同的效果:)/lib/ld-linux.so.1 path/to/executable

因此,一種選擇是mount -o exec ...。您可能希望將選項放入/etc/fstab- 通常通過將defaults選項替換為defaults,exec. 但是,除非您真的知道自己在做什麼,否則我建議您不要這樣做。

至於 BASH 的細節,我相信bash即使執行為sh. 而且您絕對可以自由地將其呼叫為bash path/to/script.

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