Permissions
為什麼 bash 給我(顯然)關於文件的衝突資訊?
背景
我正在研究 RHEL 5 集群。我希望我的 Fortran 程序讀取文件
/home/bob/inputs/input_1
- 我要求 Bob 允許我閱讀以下所有內容
inputs
:[bob@server]$ chmod -R a+r /home/bob/inputs/*
- 我將這些連結到一個共享目錄:
[david@server]$ ln -s /home/bob/inputs/ /home/share/inputs/
- 我的(Fortran)程序試圖閱讀
/home/share/inputs/input_1
並說:File /home/share/inputs/input_1 not found!
- 我試圖自己找到文件(在此過程中,鮑勃授予了
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
- 如果我
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
。