背景
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
権限を持っていると結論付けます。私は読もうとします:
[david@server]$ more /home/share/inputs/input_1 /home/share/inputs/input_1: No such file or directory
そしてそれは存在しないと聞きました。
ターゲットファイルを探していますが、
/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
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
。