절대 경로명으로만 접근할 수 있는 보이지 않는 디렉토리를 만드는 방법은 무엇입니까?

절대 경로명으로만 접근할 수 있는 보이지 않는 디렉토리를 만드는 방법은 무엇입니까?

저는 표준 UNIX 시스템에 시간 지원을 추가하는 과제를 완료하고 있습니다. 그러나 이 중 일부에는 "ls -al"과 같은 명령을 통해서도 백업 파일을 보이지 않게 만들고 절대 경로 이름에 액세스하도록 지정함으로써 백업 파일의 위치를 ​​보호(기본적으로 시스템 루트로 설정)하는 작업이 포함됩니다. . 원래 인용문은 다음과 같습니다.

마지막으로, 히스토리 디렉토리는 루트 디렉토리를 나타내는 inode의 내용을 검사하거나 "ls -al /"과 같은 명령을 실행할 때 나타나지 않고 직접 chdir()을 통해서만 액세스할 수 있다는 점에서 "가상"이어야 합니다( "cd" )는 과거 경로명에서 작동합니다.

저는 UNIX 파일 시스템 API를 탐색해 왔지만 이를 강제하는 방법을 찾지 못했습니다(명령줄 프로그램이나 bash 스크립트의 이들 조합이 작업을 수행할 수 있다고 생각합니다). 내가 잘못된 방향으로 생각하고 있는 걸까?

올바른 방향에 대한 조언이나 팁을 주시면 대단히 감사하겠습니다. 감사합니다 :)

답변1

디렉터리에 대한 읽기 권한을 제거할 수 있습니다. 이 경우 해당 콘텐츠(권한이 허용하는 경우 파일 또는 하위 디렉터리)에 여전히 액세스할 수 있지만 디렉터리 콘텐츠를 나열하는 것이 더 이상 불가능하므로 해당 이름을 알아야 합니다(또는 시도...).

답변2

x권한을 부여하지 않고 권한을 부여함으로써 루트가 아닌 사용자가 디렉토리의 파일에 액세스하도록 허용하면서 디렉토리의 내용을 나열하는 것을 방지할 수 있습니다 r. 디렉터리의 경우 r("읽기")는 내용을 나열할 수 있음을 의미하고, "읽기"는 디렉터리 안이나 내부의 파일에 x액세스할 수 있음을 의미합니다 . cd그러나 이는 권한을 참조하지 않기 때문에 할당이 의미하는 바는 아닌 것 같습니다.

일반 파일 시스템의 경우 디렉토리 항목은 디렉토리 목록에 나타나는 항목입니다. 그러나 파일 시스템 드라이버를 제어하는 ​​경우 이 규칙을 위반할 수 있습니다. 다음은 실제 환경에서 찾을 수 있는 몇 가지 예입니다.

  • 대소문자를 구분하지 않는 파일 시스템에서는 목록에 하나의 파일만 표시되는 디렉토리에 Foo있는 이름 등의 파일에 액세스할 수도 있습니다 FOO. fOO파일 시스템 드라이버가 설계된 방식이므로 모두 동일한 파일입니다.
  • 일부 자동 마운트는 디렉토리 이름에 반응하여 그에 따라 마운트를 시도합니다. 예를 들어, NFS용으로 구성된 자동 마운트는 일반적으로 사용자가 액세스할 때 /amnt/myserver/somedir마운트를 시도하여 myserver:/somedir디렉토리가 존재 /amnt/myserver하도록 결정합니다 /amnt/myserver/somedir.
  • 존재하다AVFS, 파일이 아카이브로 인식되면 디렉토리로 액세스할 수 있지만 가짜 디렉토리 이름은 디렉토리 목록에 표시되지 않습니다. ls ~/.avfs/path/toa가 표시되면 foo.zip디렉토리 ~/.avfs/path/to/foo.zip#도 존재하는 것입니다.
  • 일부 파일 시스템 스냅샷 시스템은 작업에 설명된 대로 작동합니다. 즉, 디렉토리에 액세스하거나 지정된 시간 전에 최신 스냅샷을 찍는 /snapshot/20140415022342경우입니다 ./snapshot/yesterday

관련 정보