許可が正しい場合でも、ディレクトリへのCDに対する「許可が拒否されました」


13

これはとても奇妙です。ユーザー(g)としてLinux(RHEL)ボックスにログインし、ls -lahショーを行う

drwxrwxrwx 6 g    g    4.0K Jun 23 13:27 .
drwxrw-r-x 6 root root 4.0K Jun 23 13:15 ..
-rwxrw---- 1 g    g     678 Jun 23 13:26 .bash_history
-rwxrw---- 1 g    g      33 Jun 23 13:15 .bash_logout
-rwxrw---- 1 g    g     176 Jun 23 13:15 .bash_profile
-rwxrw---- 1 g    g     124 Jun 23 13:15 .bashrc
drw-r----- 2 g    g    4.0K Jun 23 13:25 .ssh

したがって、グループ「g」のユーザー「g」は/ sould /で.sshディレクトリの読み取りと書き込みができるはずですが、もしそうすればがls -lah .ssh/得られls: .ssh/: Permission deniedます。またcat、ディレクトリ内のファイルを試してみると、許可が拒否されます

私は、rootで行くとに権限を変更した場合700744766または長い「ユーザー権限と同じものは、それが動作し、私はCDとLS内のディレクトリとファイルができ7です。

id g 戻り値

uid=504(g) gid=506(g) groups=506(g)

編集:

これらのアクセス許可を別の同じボックスに正確にコピーしましたが、問題はありません。私ができるcdディレクトリに実行権限をせずに。

回答:


27

ディレクトリは、入力するために実行ビットを設定する必要あります。何をテストしたかわかりませんが、実行ビットなしでディレクトリに入ることはできませんし、その中のファイルを読むこともできません

$ 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のマニュアルページには、〜/ .ssh内のファイルに必要な所有権と許可モードに関する指示がファイルごとに記載されています。


17

ディレクトリを使用するには、ディレクトリに実行権限が必要cdです。これは予想される動作です。


しかしcat、同じ許可を持つディレクトリ内のファイルは一切使用できません。読み取りの実行許可は必要ありません
11

4
ディレクトリ内のすべてにアクセスするには、ディレクトリの実行権限が必要です。この答えは正しいです。
EightBitTony

1
@samarudge xディレクトリを検討して、そのディレクトリに「入る」許可を与えます。これがないと、ディレクトリにcdできず、ディレクトリにあるものを見ることができず、ディレクトリにあるものを開くことができません。図書館に入館する許可がない場合、そこで本を読むことはできません。
DerfK

ディレクトリに実行権限を追加すると(ディレクトリに744、内部のファイルに644)、SSHDから.sshディレクトリの権限が644以下でなければならないというエラーが表示されます。しかし、644のようなアクセス許可では、.ssh / authorized_keysにアクセスできないと言われています
11

*ファイルではなく、具体的には「.ssh /ディレクトリ」と言う
11

2

ディレクトリにlsまたはcdするには、実行権限が必要です。それらがない場合は、コンテンツを実際に検査して内部のファイルのアクセス許可を確認することはできません。したがって、ファイルをアクセスできない場合、ファイルのアクセス許可自体が間違っている可能性があります。

700のディレクトリパーミッションと644のファイルパーミッションは、私にとって完全に適切なセットアップです。


ファイルの許可はであり、ファイル644の所有者はg:gなので、ファイルの許可は正しいです。実行許可をディレクトリに追加すると、SSHDは許可を644以下に落とす必要があると言う
11

サニーのコメントは正しいです-少し過酷な投票
-AndyM

0

これはsshファイルの問題だと思いますか?一般的なchmodの問題ではありませんか?

もしそうなら

$chmod go-w ~/
$chmod 700 ~/.ssh
$chmod 600 ~/.ssh/*
$chmod 600 ~/.ssh/.*

別の問題は、マウントポイントである可能性がありますが、CIFS、NFSの別の場所からマウントされていますか?
-AndyM

0

ディレクトリを開くには、xビットを設定する必要があります(そのビットは検索ビットと見なされます)。ですから、フォルダセットのみを取得し、すべてのファイルを実行可能ファイルとして設定するという悪夢を避けるためにツリーを使用します(ツリーのオプションは -d List directories only.)。

sudo tree -faid here_goes_your_directory xargs -L1 -I{} sudo chmod 755  "{}"

警告!!!これを考慮に入れる必要があります。

  • ルート/ディレクトリまたはシステムディレクトリでchmodまたはchown再帰を使用すると、OSが破壊されます(実際、/ディレクトリまたはシステムディレクトリで再帰的なものはすべて危険です)

  • これは、そのようなパーミッションのバルクを設定するための良いセキュリティ慣行ではありません

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.