Bashがファイルについて(明らかに)矛盾する情報を提供するのはなぜですか?

Bashがファイルについて(明らかに)矛盾する情報を提供するのはなぜですか?

背景

RHEL 5クラスタを開発中です。私のFortranプログラムがこのファイルを読むことができるようにしたいです。/home/bob/inputs/input_1

  1. Bobに次の内容をすべて読む権限を要求しますinputs

    [bob@server]$ chmod -R a+r /home/bob/inputs/*
    
  2. 共有ディレクトリに接続しました。

    [david@server]$ ln -s /home/bob/inputs/ /home/share/inputs/
    
  3. 私の(Fortran)プログラムは読み込みを試み、/home/share/inputs/input_1次のように言います。

    File /home/share/inputs/input_1 not found!
    
  4. 私はファイルを直接見つけました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
    
  7. lsディレクトリの内容を見ると、奇妙なことが起こります。

    [david@server]$ls -ltrh /home/bob/inputs/
    ?--------- ? ? ? ?            ? input_1
    ?--------- ? ? ? ?            ? input_2
    ?--------- ? ? ? ?            ? input_3
    ... (n-4 lines omitted) 
    ?--------- ? ? ? ?            ? input_n
    

    Bobがこれを行うと、次のような結果が得られます。

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

質問:

  • (私に)明らかに一貫性のないこの行動の簡単な説明はありますか?
  • 私はどこに行くべきですか?

答え1

実行権限が必要です/home/bob/inputs。これでこれを設定できます。

chmod a+x /home/bob/inputs

答え2

ランニングls -ld /home/bob/inputs/。 bobはディレクトリへの読み取り権限を付与しますが、実行権限は付与しないことに気付くでしょうdrwxr--r--。つまり、ディレクトリで読み取り権限を使用するとファイルのリストを表示でき、実行権限を使用するとファイルにアクセスできます。ディレクトリに。まれに、ディレクトリを実行可能にするのは便利ですが、その逆は役に立ちません。ほとんどの場合、ディレクトリはアクセス可能(読み取りおよび実行可能)またはアクセス不可能(読み取り可能または実行不可)です。

バラよりディレクトリを開くために実行(X)権限が必要なのはなぜですか?もっと説明したい。

回避策:ボブを起動しますchmod a+rx ~/inputs

関連情報