為子目錄 (rx) 設定全域可瀏覽權限,但使除所有者和群組成員之外的所有人都無法存取文件

為子目錄 (rx) 設定全域可瀏覽權限,但使除所有者和群組成員之外的所有人都無法存取文件

我通常有一個目錄,我希望所有使用者都能夠瀏覽該目錄,但文件不可讀且不可執行。

我看到一些相關問題與我想要的不完全匹配:

  • 這個問題正在使用umask.不適用,因為這些文件已經建立。

  • 這個問題正在使用 ACL。不過我想在這裡使用 UNIX 權限。

我通常使用find命令,但我知道它有一些弱點。我稍後會將其作為潛在的答案以及為什麼我認為可能有更好的方法發布。

答案1

我通常會使用以下內容:

find . -type f -print0 | xargs -0 sudo chmod 440
find . -type d -print0 | xargs -0 sudo chmod 555

但是,這沒有考慮可執行檔。我正在考慮對文件做這樣的事情:

find . -type f -print0 | xargs -0 sudo chmod ug+r ug-w o-rwx

但這仍然是兩個命令,我不確定這是否是最好的方法。也許有人有更好的建議。

答案2

好吧,只是不要對目錄及其中的文件設定相同的權限:

$ chmod g+rx directory/
$ chmod g= directory/*

在這裡,群組成員可以進入並瀏覽該目錄,但他們將無法讀取其中的檔案。

編輯:關於你的新標題,我建議:

$ chmod a+rx directory/
$ chmod u=rwX,g=rX,o= *

答案3

對於已經建立的目錄和檔案:

尋找/start_directory -type d -exec chmod 755 {} \;

尋找/start_directory -type f -exec chmod 660 {} \;

如果您的用戶應該能夠建立新文件和/或子目錄,請提供更多詳細信息,因為解決方案取決於特定要求。

相關內容