在文件系统中隐藏数据

dea*_*les 5 filesystems

我想隐藏一些文件,这样甚至ls -a找不到它。我不是在谈论添加“。” 在文件名前面。我在想是否可以创建单独的系统调用来访问这些文件 实际需要的是对用户隐藏一些日志文件。我正在存储一些文件的 MAC 数据,不希望用户看到这些日志文件。目前我只知道一种隐藏数据的方法,即通过添加 '.' 在文件名前面。但是用户可以通过简单的调用来查看该文件ls -a。所以我想知道是否有其他方法可以隐藏这些日志数据?

Tho*_*man 6

正如其他人所指出的那样,如果这样做的目的是阻碍对持久文件的访问,那么隐藏它可能是错误的方法。在这种情况下,如果应用程序允许,使用适当的访问控制措施甚至加密可能是一个解决方案。另一方面,创建“隐藏”临时文件是一个完全合法的用例。

在 Linux 中,从内核版本 3.11 开始,open()系统调用支持该O_TMPFILE标志,该标志可用于创建未命名的临时文件。当使用这个标志时,路径名参数 toopen()用于指定一个目录,在该目录下创建一个未命名的 inode。但是,O_TMPFILE顾名思义,它的主要用例是创建临时文件,这不适合持久存储,因为文件的最后一个文件描述符关闭时文件将丢失,除非给出了文件一个名字。可以通过linkat()系统调用为文件指定一个名称,除非O_EXCL除 之外还指定了标志O_TMPFILE,在这种情况下,将阻止将文件链接到文件系统。

最近添加的O_TMPFILE功能很重要,因为它可用于为临时文件提供以下属性:

  1. 无竞争条件的创建。
  2. 关闭时自动删除。
  3. 无法通过任何路径名访问。
  4. 不受符号链接攻击。
  5. 调用者无需设计唯一名称。

此外,该功能可用于创建最初不可见的文件,此时可在文件上调整适当的文件系统属性,然后在一个原子操作中将其链接到文件系统。这可用于避免某些TOCTOU竞争条件。

O_TMPFILE标志的一个缺点是只有一部分文件系统为其提供支持。最初在 ext2、ext3、ext4、UDF、Minix 和 shmem 文件系统中提供支持。Linux 3.15 中添加了 XFS 支持。


pho*_*ops 4

无论您采取何种分离方式,root 仍然能够访问它,因此您只能通过隐匿性获得安全性,而这并不真正安全。如果您想隐藏其他用户的访问权限,您可以使用权限。拒绝对文件或目录的读取权限将实现您想要的。