
我想安裝某些軟體。該軟體包有很多文件,包括一些 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 的情況。