권한이 맞더라도 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'/ should /의 사용자 'g'는 .ssh 디렉토리를 읽고 쓸 수는 있지만 ls -lah .ssh/얻을 수 ls: .ssh/: Permission denied있습니다. cat디렉토리에있는 파일을 시도하면 권한이 거부됩니다.

내가 루트로 가서에 사용 권한을 변경하는 경우 700, 744, 766'사용자'권한만큼 또는 아무것도 작동 (7)이며, 내가 할 수있는 CD와 LS 디렉토리와 파일 내.

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

즉, 하지 않는 프로세스는 IIRC, 실행 비트 세트없이 디렉토리를 입력 할 수있는 CAP_DAC_OVERRIDE POSIX 능력 세트 (루트가 같은)가 있습니다.

기본적으로 .ssh 디렉토리를 700으로 유지하고 그 안의 모든 것을 600으로 유지해야 안전합니다. ssh 매뉴얼 페이지는 ~ / .ssh에있는 파일의 필수 소유권 및 권한 모드에 대한 파일 별 지침을 제공합니다.


17

디렉토리에 cd들어가 려면 실행 권한이 필요 합니다. 이것이 예상되는 동작입니다.


그러나 cat같은 권한을 가진 디렉토리에있는 파일 도 읽을 수 없으므로 읽을 수있는 실행 권한이 필요하지 않습니다.
Smudge

4
디렉토리 내부에 액세스하려면 디렉토리에 대한 실행 권한이 필요합니다. 이 대답은 맞습니다.
EightBitTony

1
@samarudge x해당 디렉토리에 "있을"권한을 부여 할 디렉토리를 고려하십시오 . 그것이 없으면 디렉토리로 CD를 넣을 수 없으며 디렉토리의 내용을 볼 수 없으며 디렉토리의 내용을 열 수 없습니다. 도서관에 출입 할 수있는 권한이 없으면 그곳에서 책을 읽을 수 없습니다.
DerfK

디렉토리에 실행 권한을 추가하면 (디렉토리에 744, 내부 파일에 644) .ssh 디렉토리의 권한이 644 이하이어야한다는 SSHD 오류가 발생합니다. 그러나 644 권한으로 .ssh / authorized_keys에 액세스 할 수 없다고 말합니다
Smudge

* 파일이 아닌 '.ssh / directory'라고 구체적으로 말함
Smudge

2

디렉토리에 ls 또는 cd를 사용하려면 실행 권한이 필요합니다. 파일이 없으면 실제로 내용을 검사하고 파일의 권한을 볼 수 없으므로 파일 권한이 없으면 파일 권한이 잘못되었을 가능성이 큽니다.

700의 디렉토리 권한과 파일 권한 644는 나에게 완벽하게 괜찮습니다.


파일의 권한은 파일 644소유자이며 g : g이므로 파일의 권한이 올바른 것입니다. 내가 디렉토리 SSHD에 실행 권한을 추가하는 경우라고 나는 644 또는 아래의 권한을 드롭 할 필요가
스머지

Sunny의 의견은 정확합니다-다운 투표는 가혹합니다
AndyM

0

나는 이것이 ssh 파일 문제라고 생각합니까? 일반적인 chmod 문제가 아닙니까?

그렇다면 시도하십시오

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

마운트 지점 일 수있는 또 다른 문제는 CIFS, NFS 등 다른 곳에서 마운트 되었습니까?
AndyM

0

디렉토리를 열려면 x 비트 세트 (해당 비트가 검색 비트로 표시되는 디렉토리)가 필요합니다. 따라서 트리를 사용하여 폴더 세트 만 가져오고 모든 파일을 실행 파일로 설정하는 악몽을 피하십시오 (tree 옵션은 -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.