有些文件只能由root用户读取。然而,我很想知道数据恢复理论是否可以在这里应用,以强制从磁盘上读取文件。是否可以扫描文件的字节,特别是因为我们知道文件存在?(与可能覆盖位的恢复相反。)
我能想到的过程如下:
//Get the starting block location of the file
//Read it
// get the next block location
// read it
// iterate until done...
我有两个问题。如果有问题的文件只能由权限高于您权限的用户读取,这可能吗?即便如此,我将如何在代码中实现这一点?
您想要的也需要管理访问权限。如果您尝试在Linux系统上读取或写入原始块设备文件/dev/sd*
或/dev/hd*
,或在其他Unix系统上读取其等效文件,或使用原始Windows API调用读取块设备,您总是会发现它们需要管理权限。(Linux上的CAP_SYS_RAWIO
。)
此外,如果块设备当前已安装,那么您读取的描述文件系统布局的数据可能会从您的下面发生变化,这使得这种方法对于已安装的驱动器来说非常不可靠。
如果您想进一步了解这一点,我强烈建议您查看debugfs(8)
ext2、ext3、ext4调试工具。它完全在用户空间中实现ext*系列文件系统,并允许在原始级别上使用块设备。
如果您可以获得硬盘驱动器,请将其安装为辅助硬盘驱动器。这样,用户文件级权限就不会成为问题,因为你是root/Administrator,可以随心所欲地修改文件。您还可以使用dd(或其他工具)创建驱动器的取证映像,以进行逐位复制,然后装载该映像并读取/复制/检查文件。
在实时操作系统上没有办法做到这一点。如果你能在root不希望你的时候读取他的文件,你就会在操作系统中发现一个主要的安全漏洞。
是的,例如,如果Unix系统管理员愚蠢地让不受信任的用户读取块或原始设备,这是可能的。但操作系统的目的是在用户/应用程序和系统资源(如磁盘)之间进行中介,因此您不会发现许多系统默认设置为允许这种访问。在Unix系统的情况下,如果/dev/中的磁盘设备不可读,那么关键信息就不可用。例如,您无法知道文件的起始块位置。