我想隐藏一些文件,这样就ls -a
找不到它了。我不是在谈论添加“.”在文件名前面。我在想是否可以创建单独的系统调用来访问这些文件实际需要是向用户隐藏一些日志文件。我正在存储一些文件的 MAC 数据,并且不希望用户看到这些日志文件。目前我只知道隐藏数据的一种方法,即添加“.”。在文件名前面。但用户通过简单的调用就可以看到该文件ls -a
。所以我想知道是否还有其他方法可以隐藏这些日志数据?
答案1
正如其他人所指出的,如果这样做的目的是阻止对持久文件的访问,那么隐藏它可能是错误的方法。在这种情况下,如果应用程序允许的话,使用适当的访问控制措施甚至加密技术可能是一种解决方案。另一方面,创造“隐”暂时的files 是一个完全合法的用例。
在 Linux 中,从内核版本 3.11 开始open()
系统调用支持该O_TMPFILE
标志,可用于创建未命名的临时文件。当使用该标志时,路径名参数 toopen()
用于指定一个目录,在该目录下创建未命名的 inode。然而,O_TMPFILE
顾名思义,其主要用例是创建暂时的文件,这不适合持久存储,因为当文件的最后一个文件描述符关闭时,文件将丢失,除非为文件指定了名称。该文件的名称可以是linkat()
系统调用,除非O_EXCL
除了 之外还指定了该标志O_TMPFILE
,在这种情况下,将阻止将文件链接到文件系统。
最近添加的O_TMPFILE
功能非常重要,因为它可用于为临时文件提供以下属性:
- 无竞争条件的创建。
- 关闭时自动删除。
- 无法通过任何路径名访问。
- 不受符号链接攻击。
- 调用者无需设计唯一的名称。
此外,该功能可用于创建最初不可见的文件,此时可以在文件上调整适当的文件系统属性,然后通过一个原子操作将其链接到文件系统。这可以用来避免某些托克图比赛条件。
该标志的一个缺点O_TMPFILE
是只有一部分文件系统提供对其的支持。最初在 ext2、ext3、ext4、UDF、Minix 和 shmem 文件系统中提供支持。 Linux 3.15 中添加了 XFS 支持。
答案2
无论您采取何种分离方式,root 仍然能够访问它,因此您只能通过隐匿性获得安全性,而这并不真正安全。如果您想隐藏其他用户的访问权限,您可以使用权限。拒绝对文件或目录的读取权限将实现您想要的。
答案3
安全研究员 Grugq 发现了一种他称之为“拳头”,“文件系统插入和颠覆技术”。他的演讲读起来就像他把文件系统放在奇怪的地方,比如 EXT3 日志文件、目录文件和“坏块”文件。这似乎是通过模糊性来推荐安全性,但是你能做类似的事情吗?那?
答案4
如果您想防止其他用户(包括 root)读取您的文件,您可以对它们进行加密。如果您还想隐藏文件的名称,您可以给它们提供虚假名称,或者使用 TrueCrypt 等加密文件容器。在这种情况下,挂载文件系统时 root 仍可访问这些文件。