Permissions

為什麼在目錄權限為 r 時沒有 -l 的 ls 返回 1–

  • November 6, 2018

我已經閱讀了 thisthis,發現我的問題不同而且更具體。

我理解以下幾點。

  • 目錄上的 +x 授予通過此特定目錄訪問文件 inode 的權限
  • 被使用的文件的元資訊ls -l儲存在它的i節點中,但文件名不屬於那個

從以上兩點來看,由於lswithout-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

應該列出目錄而不抱怨。

如果它仍然抱怨,那麼您可能正在使用另一個選項,例如-For --classify,它需要訪問文件元數據(例如-F/--classify查看文件類型)。

為確保您在ls不使用別名的情況下執行,請使用

command ls

或者

\ls

要刪除 的別名ls,請使用

unalias ls

引用自:https://unix.stackexchange.com/questions/480083