Permissions

為什麼 bash 給我(顯然)關於文件的衝突資訊?

  • October 26, 2012

背景

我正在研究 RHEL 5 集群。我希望我的 Fortran 程序讀取文件/home/bob/inputs/input_1

  1. 我要求 Bob 允許我閱讀以下所有內容inputs
[bob@server]$ chmod -R a+r /home/bob/inputs/*
  1. 我將這些連結到一個共享目錄:
[david@server]$ ln -s /home/bob/inputs/ /home/share/inputs/
  1. 我的(Fortran)程序試圖閱讀/home/share/inputs/input_1並說:
File /home/share/inputs/input_1 not found!
  1. 我試圖自己找到文件(在此過程中,鮑勃授予了a+rwx權限):
[david@server]$ls -ltrh /home/share/inputs/input_1
lrwxrwxrwx 1 bob bob 33 Oct 25 15:42 /home/share/inputs/input_1 -> /home/bob/inputs/input_1

由此,我得出結論:a)inputs_1存在,b)所有使用者都有rwx權限。 5. 我試圖閱讀它:

[david@server]$ more /home/share/inputs/input_1 
/home/share/inputs/input_1: No such file or directory

並被告知它不存在。 6. 我尋找目標文件/home/bob/inputs/input_1,但被拒絕許可。

[david@server]$ls -ltrh /home/bob/inputs/input_1
ls: /home/bob/inputs/input_1 Permission denied
  1. 如果我ls的目錄內容會發生一些奇怪的事情:
[david@server]$ls -ltrh /home/bob/inputs/
?--------- ? ? ? ?            ? input_1
?--------- ? ? ? ?            ? input_2
?--------- ? ? ? ?            ? input_3
... (n-4 lines omitted) 
?--------- ? ? ? ?            ? input_n

雖然如果鮑勃這樣做,他會得到:

-rwxrwxrwx 1 bob bob  269 May 24  input_1
... (n-2 lines omitted) 
-rwxrwxrwx 1 bob bob 2.0K Jan 19  input_n

問題:

  • 對於這種明顯(對我而言)不一致的行為有簡單的解釋嗎?
  • 我從這裡去哪裡?

您需要對/home/bob/inputs. 你可以設置它:

chmod a+x /home/bob/inputs

執行ls -ld /home/bob/inputs/。我想你會發現 bob 給了你對該目錄的讀取權限,但沒有執行權限,例如drwxr--r--. 在目錄上,讀取權限可讓您查看文件列表,而執行權限可讓您訪問目錄中的文件。在極少數情況下,使目錄可執行但不可讀是有用的;相反是沒有用的。幾乎所有時候,一個目錄要麼是可訪問的(可讀且可執行),要麼是不可訪問的(既不可讀也不可執行)。

請參閱為什麼目錄需要打開可執行 (X) 權限?更多解釋。

補救措施:讓鮑勃跑chmod a+rx ~/inputs

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