我需要隐藏 Linux 系统文件夹中的文件,并且有足够大的系统文件夹可以隐藏这些文件,但是如果我强行将文件移动到系统文件夹内的文件夹中,我担心会导致操作系统出现问题:
/bin /cdrom /etc /opt /run /srv /tmp /var
/boot /dev /home /proc /snap /sys /usr etc...
如何在上述系统文件夹内创建任意文件夹,并将我的文件移动到其中?
答案1
如果我强行将文件移动到系统文件夹内的文件夹中,我担心会导致操作系统出现问题:
确实没有“强制移动”这回事。如果你说的强制是指用“sudo”绕过文件权限,那不一定是导致你遇到问题的原因——文件可能只是存在在某个地方,而不是从他们到达那里的方式。
(除此之外,如果您查看目录权限,那么如果 root 是首先有权写入这些位置的人,那么您实际上并没有“强制”任何事情。)
常规用户mkdir
应该没问题(作为 root),只要您记住列出的文件夹并非都是相同的(也就是说,并非所有文件夹都是磁盘上的普通目录)。
执行此操作之前需要考虑的事项:
你在隐藏什么?你在向谁隐藏?你在谁的系统中隐藏?例如,如果系统安装了 etckeeper 来跟踪 /etc 的更改,那么将大文件存储在那里就与隐藏它完全相反。
服务器管理员可能会使用专门针对“隐藏”文件发出警报的工具(例如
/root/.foo
),因为这通常是恶意软件感染的迹象——加密货币挖矿程序就在这里。其他取证工具将搜索整个磁盘以查找“有趣”的文件,无论其位置如何。有问题的文件夹是否确实在您的磁盘? 文件系统中并非所有东西都是磁盘位置 – 某些位置上安装了虚拟文件系统(您可以在 中看到
findmnt
)。例如,/sys
上面有 sysfs,它是完全虚拟的,您实际上不能在其中放置任意东西。您列出的几个目录是“tmpfs”安装,您可以在其中能放入任意文件 – 但 tmpfs 内容在重启时消失。查看
findmnt
和/或df -h
确认您选择的位置是主/
文件系统的一部分而不是虚拟文件系统。您会更改文件夹本身的权限吗?您会将它们改回来吗?(这会有什么影响?在错误地 chmod /bin 后,您会意外地将自己锁定在 /bin/chmod 之外吗?)
为了避免更改现有位置的权限,仅使用 root(sudo)权限创建子文件夹并更改其权限,以便其他所有操作都可以在非特权下完成。
进行较大更改时,尽量保持一个备用的“根”终端(或两个)处于打开状态。也就是说,不仅仅是运行 的终端
sudo
,而且是启动了 的终端。壳以 root 身份使用sudo -i
或sudo bash
。通过这种方式可以更轻松地撤消多种更改(例如意外将 /lib 移动到其他地方)。您会用您的文件覆盖某些内容吗(例如,在错误的制表符补全的情况下)?
mv -i
在意外覆盖任何内容之前,请务必使用该选项来启用确认。你的新文件或文件夹是否会导致未来与系统可能创建的某些内容(例如将来从软件包安装的内容)冲突?
(例如,如果您在 /dev/sdc 中“隐藏”了某些内容 - 撇开 /dev 是 tmpfs 的问题不谈 - 当您连接 USB 记忆棒并且它也获得名称“sdc”时会发生什么?)
这不一定是个大问题,但这意味着你需要记住你对系统做了什么。
您的新文件或文件夹是否会被操作系统意外拾取?在某些位置,任何具有特定文件名的文件都会被自动读取;例如,GRUB 将查找任何
/boot/vmlinuz*
文件,因此在最好的在这种情况下,如果您试图在 /boot/vmlinuz-homework 中隐藏某些内容,GRUB 将开始抱怨无法识别的格式,并使文件的存在非常明显。在最坏的情况下,服务可能会停止工作,因为它找到了一个“配置”但无法理解它。没有单一的方法可以识别这样的位置,但要避免将随机的东西放在
*.d/
文件夹中(例如,许多服务都尝试加载something.d/*.conf
)。
答案2
存在专门用于隐藏文件的产品,它们比发明的方法更好。
例如,你可以使用 VeraCrypt, 被形容为:
VeraCrypt 是一款用于建立和维护即时加密卷(数据存储设备)的软件。即时加密意味着数据在保存前自动加密,在加载后立即解密,无需任何用户干预。如果不使用正确的密码/密钥文件或正确的加密密钥,则无法读取(解密)加密卷上存储的任何数据。整个文件系统都经过加密(例如,文件名、文件夹名、每个文件的内容、可用空间、元数据等)。
挂载时,VeraCrypt 卷看起来就像是一个单独的磁盘。从外部来看,它看起来就像一个完全不可读的二进制文件,也就是说看起来像是随机垃圾。
在极端情况下,VeraCrypt 卷可以隐藏在磁盘上未分配的空间内,因此完全不可见。
安装 VeraCrypt 卷需要,首先,某人事先知道它是什么,其次,这个人知道卷密码(或短语密钥)。
答案3
您的问题暗示您拥有 root 访问权限。这还暗示至少还有一位拥有 root 访问权限的人,而您正试图向他隐藏。这还暗示您并不是一个特别老练的用户。
所以,我有一个问题要问你……
您是否准备好因您要做的事而失去对站点上所有计算机的访问权、被学校开除、失去工作、甚至可能入狱?
因为除非你比这里提供答案的所有人都聪明,否则你会立即被抓住。
三年来,我负责一个拥有数百台政府电脑的设施的安全。由于管理层非常偏执,他们要求我监控所有电脑,以防有人试图在任务范围之外使用这些电脑。那时我已经有 10 多年的 Linux 经验了。那是在 2005 年左右。
我编写了脚本来检查文件时间戳、幻数、在意想不到的地方创建的新文件、校验和、设备列表、与现有记录不匹配的登录信息等。外部监控检测到异常的端口使用和网络活动。因为这是我的全职工作,所以如果检测到任何问题,他们会立即给我发电子邮件。他们还登录到远程服务器。
我之所以能有效地做到这一点,是因为每个可能访问这些计算机的人都经过了审查。如果可以公开访问,我会编写一个内核模块而不是脚本。
您必须明白,尽管您的 Linux 系统对您来说可能显得庞大而复杂,但对那些比您高出几级的人来说却并非如此。如果某些人真的在乎您不在硬件上扮演间谍角色,那么您遭受打击的速度会比您想象的要快。
答案4
如果您的主文件系统(或其他文件系统)是 Btrfs,并且您挂载的子卷不是文件系统的根目录,并且您通常不挂载文件系统的根目录,那么您可以创建“aside”子卷并将文件存储在那里。这些文件将无法在您的常规挂载点下使用根本。
请阅读btrfs:浏览子卷我的回答是,任何 Btrfs 文件系统都有自己的目录(和子卷)树,您可以轻松地只挂载其中的一部分。
例如,假设/
你的操作系统确实是/@
(或/@rootfs
类似)你的 Btrfs 文件系统,即它是使用subvol=@
选项挂载的;假设你不通常使用 来挂载整个文件系统subvol=/
。然后实际将整个文件系统挂载到某处:
mount -o subvol=/ /dev/sdx1 /some/mountpoint
并创建一个子卷:
btrfs subvolume create /some/mountpoint/stash
最后卸载:
umount /some/mountpoint
你将创建一个子/stash
卷不是/@
在您使用的操作系统的子卷下/
。要访问您的存储,您需要挂载文件系统subvol=/stash
(或subvol=/
再次访问整个文件系统)。
这有点像在您通常不挂载的文件系统中存储数据,但无需单独的文件系统。向 Btrfs 添加数据将占用您在操作系统中/stash
使用的文件系统的可用空间,就像在磁盘中隐藏某些内容一样;所以这与您询问的内容类似。不同之处在于:/
/usr
- 你的存储不会以任何其他方式影响操作系统,
- 您可以轻松地使存储从操作系统的目录树中消失(通过卸载)。
调用btrfs subvolume list /
或挂载整个文件系统将显示的存在stash
,无论stash
子卷本身是否被挂载。