使所有資料夾對“其他”不可讀 - 但保持其有關“寫入”和“執行”的原始狀態

使所有資料夾對“其他”不可讀 - 但保持其有關“寫入”和“執行”的原始狀態

總長DR:如何更改電腦中所有資料夾的權限,以便對於「其他」資料夾,這些資料夾僅具有可讀性?換句話說,他們保留了「寫入」和「執行」的狀態,但失去了「讀取」的可能性,以防萬一他們一開始就有「讀取」的可能性?

長版:在第一次設定伺服器(使用者可以透過 SSH 存取的伺服器)時,我的第一個想法是嘗試找出如何建立只允許存取自己的home/username資料夾和子資料夾的新使用者。

但是,我找到了一些參考資料(例如這個問題/答案)線上解釋說這可能不是一個好主意,因為用戶當然仍然需要訪問某些系統資料夾(例如usr/bin或 )usr/lib以及寫入資料夾(例如tmp.當然,這確實有道理。然後,我試圖實現的目標是讓使用者能夠使用系統資料夾中存在但不存在的內容他們的內容。

更具體地說,這意味著將系統中的所有資料夾設定為「其他人」不可讀,同時在可寫入性和可執行性方面仍保持「其他人」的原始狀態。例如,具有權限的資料夾754將變為750,具有權限的資料夾756將變為752,具有 的資料夾755將變為,等等,而具有、、或 的751資料夾將保持不變。等等等等。753752751750

這樣,除了 root 之外,沒有人能夠看到除其home/username資料夾和子資料夾之外的任何資料夾內的內容,但她仍然可以在最初允許的所有系統資料夾中正常執行和寫入。

我怎樣才能對所有資料夾執行此操作?當然也歡迎對這個想法可能的缺陷提出評論。

答案1

find /path/to/directory/ -type d -exec chmod o-r {} \;

應該管用。對於每個資料夾,find執行chmod.chmod然後刪除其他人的讀取位元。

答案2

只有核心本身打開的二進位物件才能被標記為可執行但不可讀。任何類型的腳本(bash、python 等)在執行之前都必須先讀取。看:

相關內容