
假設我在 ~ 中建立了目錄(稱為 temp),並且在其中建立了一些檔案。現在,我的 umask 是 0002,但為了練習,我更改了 ~/temp/ 的權限:
chmod 222 temp
據我所知,擁有目錄的寫入權限意味著我無法打開它或讀取它的內容,但我應該能夠在其中添加文件(或刪除文件)。例如,我認為這會很好地工作:
touch temp/new_file.txt
但是,當我嘗試這樣做時,它只會拋出一個錯誤:
touch: cannot touch 'temp/new_file.txt': Permission denied
我不明白為什麼這不能按我預期的方式工作,所以我想知道當我只有寫權限時我可以對目錄做什麼,以及為什麼按照我嘗試的方式創建新文件不起作用?
(以上所有指令均在~中執行)
任何幫助表示讚賞!
答案1
目錄的權限工作方式不同,
這不是一個完美的解釋,但是,
根據 chmod ( man chmod
) 的手冊頁:
字母 rwxXst 為受影響的使用者選擇檔案模式位元:讀取 (r)、寫 (w)、執行(或搜尋目錄)(x),僅當檔案是目錄或已具有某些使用者(X)的執行權限時才執行/搜索,設定執行時的使用者或群組ID(s),限制刪除標誌或黏性位元(t)。您可以指定字母 ugo 之一,而不是這些字母中的一個或多個:授予擁有該檔案的使用者的權限 (u)、授予屬於該檔案群組的其他使用者的權限 (g)、以及授予不屬於上述兩個類別的使用者的權限(o)。
這意味著要寫入目錄中的文件,您需要首先切換到目錄(執行權限)並建立一個檔案(寫入權限)