Windows의 순회 검사 우회와 동등한 Unix/Linux

Windows의 순회 검사 우회와 동등한 Unix/Linux

Windows에는 다음과 같은 권한이 있습니다."우회 통과 확인"(또한 ~으로 알려진알림 권한 변경). 이를 통해 시스템은 사용자가 [잠재적으로] 하위 개체에 액세스할 수 있도록 상위 개체의 ACL 검사를 우회할 수 있습니다.

다음 예가 도움이 될 수 있습니다.

<file system>
  |
  +-- john.doe
      |
      +-- public

위의 예에서는 일반적으로 사용자가 john.doe모든 권한을 갖도록 디렉토리를 제한합니다(그의 그룹에는 읽기 권한이 있을 수 있음). 그러나 Doe의 public목차는 누구나 읽을 수 있으므로 누구나 그가 공유하는 콘텐츠를 볼 수 있습니다.

Windows에서는 위의 시나리오를 용이하게 하기 위해 순회 검사를 우회하는 것이 사용됩니다.

Unix/Linux는 Windows의 순회 검사 우회와 동일한 기능을 제공합니까? 그렇다면 무엇입니까?

public그렇지 않은 경우 상위 디렉터리의 보안 허점을 열지 않고 어떻게 이 디렉터리에 대한 액세스를 제공할 수 있습니까 ?


흥미롭게도 내 모든 Ubuntu 시스템에는 홈 디렉토리가 제한되지 않으므로 해당 public디렉토리에 액세스할 수 있는 사람은 누구나 액세스할 수 있습니다. 게스트 계정도 마찬가지입니다! 그리고 게스트 계정은 루트 디렉터리를 조사할 수도 있습니다. 그러나 데스크톱과 서버의 게스트 계정은 "또 다른 웜 캔입니다..."


나는 최근에 이것을 발견했습니다.Cryptree: 암호화된 파일 시스템의 폴더 트리 구조. 나는 이 진술이 정확하지 않다고 생각합니다(예:"우회 통과 확인"데모):

접근권한의 상향 상속: 폴더에 대한 액세스 권한을 명시적으로 부여한다는 것은 폴더의 상위 폴더 이름에 대한 액세스 권한을 상속한다는 의미입니다. 예를 들어, Alice에게 /bob/projects/에 있는 Documents/ 폴더에 대한 재귀적 액세스 권한을 부여하면 Alice는 자동으로 상위 폴더 /bob/ 및 /bob/projects/의 이름을 볼 수 있도록 허용되어야 합니다. 상위 폴더의 이름을 볼 수 없기 때문에 document/에 대한 올바른 경로를 재구성할 수 없습니다.

답변1

Linux에는 "Bypass Traversal Check"와 정확히 동일한 기능이 없습니다. 동일한 정책을 달성하기 위해 다른 수단을 사용합니다.

전통적으로 사용자의 홈 디렉터리는 공개적으로 읽을 수 있습니다. 사용자는 개인 파일에 대한 하위 디렉터리를 만들고 이를 개인용으로 설정할 수 있습니다. Unix 권한(최신 ACL 구성표 포함)의 좋은 특징은 경로의 구성 요소가 비공개인 경우 파일 권한에 관계없이(즉, 순회 확인을 우회할 수 있는 방법이 없습니다...) 파일이 비공개라는 것입니다. , 따라서 개인 디렉토리의 파일이 실수로 노출될 위험이 없습니다. 응용프로그램은 다음에 따라 파일을 생성합니다.마스크기본적으로 사용자가 umask를 077로 설정하면 해당 파일은 기본적으로 비공개가 됩니다(기본 umask는 전통적으로 022이므로 파일을 공개적으로 읽을 수는 있지만 쓸 수는 없습니다). 파일의 내용이 비공개일 것으로 예상하는 애플리케이션(예: 이메일)은 umask에 관계없이 비공개 파일을 생성합니다.

다른 사용자에게 개인 디렉터리의 파일에 대한 액세스 권한을 부여하는 방법이 있습니다. 파일이 이동되면 해당 파일을 열어 둔 모든 프로세스가 해당 파일에 대한 액세스 권한을 유지합니다. 따라서 개인 디렉터리에 생성된 파일은 안전하지만 해당 디렉터리로 이동된 파일은 여전히 ​​열려 있을 수 있습니다. 이는 파일을 이동한 후 파일에 더 많은 데이터를 쓰는 경우에만 의미가 있습니다.

카탈로그 보기는 다른 권한을 사용하여 다른 위치에 생성될 수 있습니다. 보기에 대한 권한은 실제 디렉터리를 통과하는 권한의 영향을 받지 않고, 보기의 위치, 디렉터리 자체와 해당 파일, (해당되는 경우) 매개변수를 통과하는 권한에 의해서만 영향을 받습니다. 보다. 다음 명령을 사용하여 뷰를 생성할 수 있습니다.파일 시스템 바인딩파일 시스템을 사용하거나 Linux 번들 마운트를 사용하세요. 바라보다루트가 아닌 프로세스가 보안을 손상시키지 않고 모든 홈 디렉토리에 액세스하도록 허용하시겠습니까?,사용자가 다른 사용자의 홈 디렉토리를 읽을 수 있도록 허용그리고특정 사용자만 마운트된 파티션의 하나의 NTFS 폴더에 액세스하도록 허용하는 방법은 무엇입니까?몇 가지 예를 들어보세요.

답변2

어느 정도:

Unix 권한 모델에서는 r디렉터리의 비트를 통해 해당 내용을 나열할 수 있으며 이러한 x비트를 통해 디렉터리에 대한 핸들을 얻을 수 있습니다. 핸들을 사용하면 이름을 알고 있는 경우 해당 디렉터리에 있는 파일과 디렉터리를 참조할 수 있으며, 핸들 사용은 객체의 inode 권한에 따라 달라집니다.

따라서 설명하는 시나리오의 경우 x권한을 부여합니다.다른 사람, 모든 사람이 디렉터리로 이동하는 동안 해당 디렉터리를 통과할 수 있도록 허용합니다 public. 그러나 디렉터리의 다른 모든 항목에는 잠금으로 설정된 권한이 필요합니다.다른 사람, 확실히.

이는 public_html사용자의 홈 디렉터리에 있는 디렉터리에 대한 일반적인 구성입니다.

관련 정보