為了調試目的,將專案中的所有內容設為777
( rwxrwxrwx
) 後,我想降低開放性並將根資料夾中的目錄(而不是檔案)設為664
( rw-rw-r--
)。
為此,我使用了(來自如何使用 bash 指令列出資料夾?):
chmod 664 -- */
這正如預期的那樣。然後我意識到我需要目錄上的執行位才能進入它們。所以我嘗試:
chmod 764 -- */
但這引發了一個missing operand after "764"
錯誤。
我可以手動更改權限(chmod 764 <dir-name>
),並且沒有那麼多目錄,所以這不是一個大問題,但我想了解。
為什麼我不能使用chmod 764 */
將目前路徑中的目錄設定為rwxrw-r--
?
答案1
如果您設定了 shell glob 選項,那麼這將是有意義的
*
包括以.
, 和開頭的名稱- 不符合任何內容的通配符就會消失,而不是繼續存在。 (例如,如果您沒有任何名稱以 開頭的文件
foo
,則該命令echo foo*
將列印一個空白行而不是按foo*
字面列印。)
如果上述情況成立,則第一個指令設定為模式 664,這表示您在發出第二個指令時.
沒有讀取權限。.
所以*/
無法擴展,chmod 764 -- */
變成了chmod 764 --
。