2016-10-03 34 views
0

我已經開始與Docker一起工作以進行本地開發,從將Mac上的所有內容安裝到容器。期待通過一些項目我經常看到下面的shell命令,尤其是什麼時候在Docker中使用-type d-exec chmod 750/640

find /www -type d -exec chmod 750 {} \; \ 
find /www -type f -exec chmod 640 {} \; 

首先,什麼是他們試圖實現,其次什麼的命令實際上意味着,最後爲什麼/時,你會想要或需要使用這個?

我最近重複並修改了另一個項目,發現把這些命令拉出來似乎沒有什麼區別(足夠公平,它不再基於相同的基本容器......但仍然)。

任何啓發的微光將不勝感激。

EDITS:

handy link in the comments below to explain shell告訴我們: 什麼:找到的所有文件夾中/www並執行chmod命令,更改權限至750 - 仍然不確定的750,更重要的是你爲什麼要這麼做。

+0

您是否閱讀過'find'和'chmod'命令的文檔? –

+1

[find/www -type d -exec chmod 750 {} \;](http://explainshell.com/explain?cmd=find+%2Fwww+-type+d+-exec+chmod+750+ {}) – Cyrus

+0

thanks for真棒鏈接,解釋shell將成爲我新的最好的朋友。 – pushplaybang

回答

1

這些命令將所有文件和目錄設置爲可由所有者讀取和寫入,並且可由羣組讀取,但文件不能由任何人執行。

您可能需要先閱讀unix permissions in a bit more detail

find /www -type f -exec chmod 640 {} \; 

找到所有的文件/www下並設置用戶具有r EAD,w儀式訪問(6)和基團具有r EAD存取(4)。其他用戶無權訪問(0)。

find /www -type d -exec chmod 750 {} \; 

找到所有的目錄/www下並設置用戶具有r EAD,w儀式和e x ecute權限(7)和所述組具有r EAD和e x ecute權限(5)的目錄。其他用戶沒有權限(0)。

\;每個find終止-exec命令,並在外殼中運行時因此它不被解釋爲一個普通;其是殼命令的末尾必須轉義後。這也可以通過+來實現,其更容易閱讀,因爲它不需要被轉義並且more efficient。如果您在其他地方依賴stdout/stderr,效率可能會導致輸出差異。

Execute permissions on a directory表示用戶可以切換到目錄並訪問裏面的文件。由於目錄不能執行可執行文件,執行位被重載以表示其他內容。

link Cyrus posted to explainshell.com也是一個很好的工具。

+0

謝謝你的精彩回答,很棒的鏈接,感謝你。 – pushplaybang

+0

'-exec'具有強制性的'+'或';'最後一個參數 - 因此OP原始代碼中的分號不是shell指令,而是實際上必要的參數。 ('+'形式更加高效,像'xargs'一樣行爲,因爲它將盡可能多的參數組合到每個命令中)。 –

+0

@CharlesDuffy謝謝,錯過了 – Matt

相關問題