Permissions
為什麼在目錄權限為 r 時沒有 -l 的 ls 返回 1–
我已經閱讀了 this和this,發現我的問題不同而且更具體。
我理解以下幾點。
- 目錄上的 +x 授予通過此特定目錄訪問文件 inode 的權限
- 被使用的文件的元資訊
ls -l
儲存在它的i節點中,但文件名不屬於那個從以上兩點來看,由於
ls
without-l
不需要訪問目錄中文件的i-nodes,它應該成功列出文件名並返回0。但是,當我在我的機器上嘗試它時,列出了文件名,但是有一些警告,如
permission denied
,並且返回碼是 1。b03705028@linux7 [~/test] chmod 500 permission/ b03705028@linux7 [~/test] ls --color=no permission/ f1* b03705028@linux7 [~/test] chmod 400 permission/ b03705028@linux7 [~/test] ls --color=no permission/ ls: 無法存取 'permission/f1': 拒絕不符權限的操作 f1 b03705028@linux7 [~/test] echo $0 bash
漢字基本都在講
permission denied
我的 unix 發行版是
Linux 4.17.11-arch1
我懷疑
ls
在您的情況下是類似的別名ls --color=auto
;在這種情況下,ls
嘗試查找有關目錄中包含的文件的資訊,以確定使用哪種顏色。ls --color=no
應該列出目錄而不抱怨。
如果它仍然抱怨,那麼您可能正在使用另一個選項,例如
-F
or--classify
,它需要訪問文件元數據(例如-F
/--classify
查看文件類型)。為確保您在
ls
不使用別名的情況下執行,請使用command ls
或者
\ls
要刪除 的別名
ls
,請使用unalias ls