저는 표준 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/to
a가 표시되면foo.zip
디렉토리~/.avfs/path/to/foo.zip#
도 존재하는 것입니다. - 일부 파일 시스템 스냅샷 시스템은 작업에 설명된 대로 작동합니다. 즉, 디렉토리에 액세스하거나 지정된 시간 전에 최신 스냅샷을 찍는
/snapshot/20140415022342
경우입니다 ./snapshot/yesterday