나는 사용자가 자신이 하는 디렉토리에서 작업할 때아니요읽기 권한이 있는 경우 cd를 사용하면 하위 디렉터리가 존재하는지 여부에 따라 다른 오류 메시지가 생성됩니다.
$ ls
ls: cannot open directory .: Permission denied
$ cd nonexistentdirectory
-bash: cd: nonexistentdirectory: No such file or directory
$ cd existingdirectory
-bash: cd: username: Permission denied
이것은 질문을 제기합니다: 사용자가 읽기 권한 없이 이런 방식으로 나열된 디렉토리를 무차별 대입할 수 있는 것이 보안 결함입니까? 그렇다면 이것은 UNIX 또는 Bash의 결함입니까?
답변1
기능이 정상적으로 작동하므로 이는 보안 결함이 아닙니다. (이 기능이 거의 우연히 등장했다는 점을 고려하면 이는 놀라운 일이 아닙니다.) 여러분의 기대가 기능이 실제로 수행하는 것과 완전히 일치하지 않을 수도 있습니다.
사용자가 디렉토리에 대한 실행 권한은 있지만 읽기 권한은 없는 경우 사용자는 디렉토리 이름만 알고 있으면 디렉토리의 모든 항목에 액세스할 수 있습니다. 이 액세스에는 이름, 유형, 크기, 날짜 등을 포함하여 항목에 대한 모든 메타데이터가 포함됩니다. 따라서 사용자는 존재하지 않는 항목과 자신이 액세스할 수 없는 콘텐츠가 있는 기존 항목을 구별할 수 있습니다.
항목 이름은 비밀번호와 같습니다. 비밀번호를 알면 해당 항목에 접근할 수 있습니다. 항목에는 추가 액세스 제한이 있을 수 있지만 이는 관련이 없는 질문입니다. 가능한 모든 비밀번호를 시도하여 언제든지 무차별 비밀번호 인증을 수행할 수 있습니다.
--x 디렉토리의 항목에 대한 정보를 공개하고 싶지 않다면 추측할 수 없는 이름(즉, 충분히 긴 임의의 이름)을 사용하십시오.
답변2
예, Unix 파일 및 디렉터리 권한이 정의되고 구현되는 방식의 보안 결함으로 생각할 수 있습니다. 이는 절충안입니다. 예를 들어 사용자가 경로를 알고 있는 경우 제한된 계층 구조에 있는 디렉터리에 대한 액세스 권한을 사용자에게 부여할 수 있습니다.
해결 방법은 제한된 디렉터리를 중첩하여 매우 중요한 정보에 액세스하기 위해 여러 구성 요소를 추측해야 하는 것입니다. 그러나 물론 이것이 실제로 보안을 강화하는 것은 아니며 단지 흐릿해질 뿐입니다.
사용자는 어쨌든 root
이러한 제한을 우회할 수 있으므로 여전히 특별히 안전하지는 않습니다. 합리적인 보안을 원한다면 다중 사용자 시스템이 적합하지 않을 수 있습니다.