일부 파일을 숨겨서 찾을 수 없도록 하고 싶습니다 ls -a
. 파일 이름 앞에 "."를 추가하는 것에 대해 말하는 것이 아닙니다. 이러한 파일에 액세스하기 위해 별도의 시스템 호출을 만들 수 있는지 궁금합니다. 실제로 필요한 것은 사용자로부터 일부 로그 파일을 숨기는 것입니다. 일부 파일에 대한 MAC 데이터를 저장하고 있는데 사용자가 이러한 로그 파일을 볼 수 없도록 하고 싶습니다. 현재 제가 아는 데이터를 숨기는 방법은 "."를 추가하는 것뿐입니다. 파일 이름 앞에. 하지만 사용자는 간단한 호출만으로 파일을 볼 수 있습니다 ls -a
. 그렇다면 이 로그 데이터를 숨길 수 있는 다른 방법이 있는지 궁금합니다.
답변1
다른 사람들이 지적했듯이, 이것의 목적이 영구 파일에 대한 액세스를 방지하는 것이라면 이를 숨기는 것은 아마도 잘못된 접근 방식일 것입니다. 이 경우 애플리케이션에서 허용하는 경우 적절한 액세스 제어 방법이나 암호화를 사용하는 것이 해결책이 될 수 있습니다. 반면에 "숨겨진"을 만드는 것은일시적인파일은 완벽하게 합법적인 사용 사례입니다.
Linux에서는 커널 버전 3.11부터open()
이 플래그는 시스템 호출에서 지원되며 O_TMPFILE
이름 없는 임시 파일을 만드는 데 사용할 수 있습니다. 이 플래그를 사용할 때,경로명to 매개변수는 open()
이름 없는 inode를 생성할 디렉터리를 지정하는 데 사용됩니다. 그러나 O_TMPFILE
이름에서 알 수 있듯이 기본 사용 사례는 다음을 만드는 것입니다.일시적인파일의 경우 파일에 이름이 지정되지 않으면 마지막 파일 설명자가 닫힐 때 파일이 손실되므로 영구 저장소에 적합하지 않습니다. 파일 이름은 다음과 같습니다.linkat()
O_EXCL
이 플래그를 추가로 지정 하지 않는 한 시스템 호출이 O_TMPFILE
발생합니다. 이 경우 파일을 파일 시스템에 연결하는 것이 방지됩니다.
최근에 추가된 이 O_TMPFILE
기능은 임시 파일에 다음 속성을 제공하는 데 사용될 수 있으므로 매우 중요합니다.
- 경쟁 조건이 없는 생성.
- 닫으면 자동으로 삭제됩니다.
- 어떤 경로명으로도 접근할 수 없습니다.
- 심볼릭 링크 공격으로부터 보호되지 않습니다.
- 호출자는 고유한 이름을 디자인할 필요가 없습니다.
또한 이 기능을 사용하면 처음에는 보이지 않는 파일을 생성할 수 있으며, 이 시점에서 파일에 대한 적절한 파일 시스템 속성을 조정한 다음 단일 원자성 작업으로 파일 시스템에 연결할 수 있습니다. 이는 특정 상황을 방지하는 데 사용될 수 있습니다.톡투경쟁 조건.
이 플래그의 한 가지 단점 O_TMPFILE
은 일부 파일 시스템에서만 이를 지원한다는 것입니다. 처음에는 ext2, ext3, ext4, UDF, Minix 및 shmem 파일 시스템에서 지원이 제공됩니다. XFS 지원은 Linux 3.15에 추가되었습니다.
답변2
분리 방법에 관계없이 루트는 여전히 액세스할 수 있으므로 실제로는 안전하지 않은 모호함을 통해서만 보안을 얻을 수 있습니다. 다른 사용자의 액세스를 숨기려면 권한을 사용할 수 있습니다. 파일이나 디렉터리에 대한 읽기 권한을 거부하면 원하는 결과를 얻을 수 있습니다.
답변3
보안 연구원 Grugq는 "주먹", "파일 시스템 삽입 및 중단 기술". 그의 강연은 EXT3 로그 파일, 디렉토리 파일 및 "배드 블록" 파일과 같은 이상한 위치에 파일 시스템을 배치하는 것처럼 읽혔습니다. 이것은 모호함을 통해 권장되는 것처럼 보였습니다. 보안, 하지만 할 수 있습니까? 그런 것?
답변4
다른 사용자(루트 포함)가 파일을 읽지 못하도록 하려면 해당 파일을 암호화할 수 있습니다. 파일 이름도 숨기려면 가짜 이름을 지정하거나 TrueCrypt와 같은 암호화된 파일 컨테이너를 사용할 수 있습니다. 이 경우 파일 시스템이 마운트되어 있으면 루트는 계속 파일에 액세스할 수 있습니다.