解決策 1:
ディレクトリは 入力するには、実行ビットが設定されている必要があります。何をテストしたかはわかりませんが、できません 実行ビットなしでディレクトリに入る、またはその中のファイルを読み取る:
$ mkdir foo
$ echo "baz" > foo/bar
$ chmod 660 foo
$ cd foo
bash: cd: foo: Permission denied
$ cat foo/bar
cat: foo/bar: Permission denied
つまり、ただし プロセスには CAP_DAC_OVERRIDE POSIX ケーパビリティ セット (root と同様) があり、これにより、実行可能ビット セット iirc なしでディレクトリに入ることができます。
基本的に、安全のために、.ssh ディレクトリを 700 に保ち、その中のすべてを 600 に保つようにしてください。 ssh の man ページには、~/.ssh 内のファイルに必要な所有権と許可モードに関する指示がファイルごとに記載されています。
解決策 2:
cd
を実行するには、ディレクトリに実行権限が必要です それに。これは予期される動作です。
解決策 3:
ディレクトリに ls または cd を実行するには、実行権限が必要です。それらを持っていない間は、コンテンツを実際に検査して内部のファイルのアクセス許可を確認することはできません。そのため、それらを cat できない場合は、ファイルのアクセス許可自体が間違っている可能性があります。
ディレクトリのパーミッション 700 とファイルのパーミッション 644 は、私にとって完全に問題のない設定です。