將所有檔案轉換為可執行檔有什麼害處嗎?

將所有檔案轉換為可執行檔有什麼害處嗎?

我想安裝某些軟體。該軟體包有很多文件,包括一些 shell 腳本文件。最初我必須選擇一些文件然後使其可執行:

chmod 777 shellscr1

但後來我意識到有很多這樣的文件我必須使其可執行。因此,作為捷徑,我這樣做了:

chmod 777 *

現在所有文件都是可執行的。

這樣做是否會產生任何嚴重後果(除了安全之外)?

答案1

根據程式的不同,它可能不會產生任何負面影響,也可能導致軟體無法使用。

例如,變更 ~/.ssh 目錄的權限,並查看當您嘗試 ssh 到另一台電腦時發生什麼錯誤。

某些程式以特定使用者身分存取設定檔。擁有777權限,任何人都可以覆蓋該文件他們文件所有者。

答案2

正如其他人指出的那樣,沒有理由(至少在問題中沒有提出)為什麼文件需要是全局可寫的。類似chmod 755 *or 的東西chmod +x *就夠了。

然而,我會進一步縮小答案範圍,並給你一個答案確切地你要什麼。 shell 腳本總是以舍邦例如

#!/usr/bin/env bash

因此,這裡有一個片段,它將搜尋當前目錄中以字元開頭的任何檔案#!/並使這些檔案可執行。換句話說,這個指令只會將那些看起來像 shell 腳本的檔案標記為可執行檔。

for file in *; do [ "$(head -c 3 "$file")" = '#!/' ] && chmod +x "$file"; done;

答案3

除了安全之外,不會產生任何嚴重後果。 (當然是邏輯上講)

答案4

最初我必須選擇一些文件然後使其可執行:

 chmod 777 shellscr1

使它們可執行並不意味著第777章, 它的意思是第755章。出於與安全相關的明顯原因,您至少可以更改此設定。

使 shell 腳本可執行有時可能會產生一些不利影響。例如,如果您的/bin/sh指向與腳本預期不同的 shell,您可能會使其基本上無法使用。一個好的程式設計師會採取措施來防止這種情況發生,並且透過更改權限,您可能會使他的努力失效。

但是,我再說一遍,這只適用於 /bin/sh 指向非標準 shell 的情況。

相關內容