1

大家好,我有一些非常重要的系统文件,我想防止它们被 root 用户意外删除。我可以为此创建一个新分区并以只读访问权限安装它,但问题是我希望处理这些系统文件的应用程序对该部分具有写访问权限并能够修改它们。这可能使用VFS吗?由于 VFS 处理对文件的访问,我可以在 VFS 层中插入一个模块,该模块可以查看是否有对该部分的写访问,然后查看授权并允许它或以其他方式拒绝它。如果没有,请向我提供有关如何实施这样一个系统的建议,在这种情况下我需要什么。如果存在这样的系统,请也提出建议。我正在使用 linux 并想在 C 中实现这一点,我认为只能在 C 中实现。

编辑:在windows中实现了这种程序,甚至可以限制对管理员的访问,对一些重要的文件夹,这在linux中可能吗?我的应用程序是一个系统备份和恢复程序,需要保证其备份信息的安全。所以我想要一个分区的安全部分,不能以任何方式意外删除。有锁定闪存驱动器的方法,我们也可以使用其中一些方法来锁定 linux 中的分区吗?这样挂载受密码保护吗?我不是在编写病毒应用程序,我的应用程序会为用户提供删除备份的选项,但我不想让它们被任何其他应用程序删除。编辑:我正在为 ubuntu 编写系统还原和备份程序,我是一名计算机工程专业的学生。

编辑:正如我从 Basile Starynkevitch 那里得到的意见,如果我做这样的事情,我会犯下最严重的编程罪,但你可以给我建议,考虑到这是一个实验项目,我可以在 VFS 层中进行一些更改,以便这可以工作。

4

3 回答 3

2

您可以使用chattr,例如

chattr +i yourfile

但我不认为这样做是件好事。使用root访问权限的人应该小心。那些具有 root 访问权限的人仍然可以发出撤消上述命令的命令。

没有办法禁止具有 root 访问权限的人或对计算机具有物理访问权限的人访问、删除、更改您的文件,如果他们真的想要的话(例如,他们可以更新和破解内核)。阅读有关可信计算库的更多信息

而且我认为这样做甚至是不道德的(在某些国家可能是非法的)。我拥有我的电脑,我不明白你为什么不允许我更改其中的一些数据,因为我碰巧安装了一些软件。

根据 Linux 的定义root,它可以做任何事情……您将无法禁止他擦除或更改数据……有权root访问的人可以在磁盘上的任意位置写入任意字节。

在我拥有的机器上(或者可能只是物理访问),感谢上帝,我总是能够删除文件(即使在 Windows 下:例如,我可以启动 Linux CDROM 并从 Linux 访问中删除文件NTFS,然后重新启动 Windows...)。

所以我认为你不应该费心,花一分钟时间来找出如何让root修改你珍贵的文件变得更加困难。将它们保留为其他root文件...

哲学咆哮

unix的哲学一直是信任系统管理员(同时保护新手用户免受错误),即root用户。root可以做任何事情(这就是为什么人们避免出现,root即使是在个人机器上)。从来没有强大的功能来禁止root犯错,因为系统管理员应该对系统了如指掌,并且是值得信任的。

Unix 系统管理员明白这个事实:这是他们文化的一部分。(这可能与 Windows 管理文化形成对比)。他们知道什么时候要小心,他们不期望软件能够以 root 身份防止错误。

于 2011-11-29T17:14:10.927 回答
1

为了使用 root squashing(这使得 root 甚至无法看到本地用户的文件),您可以设置一个本地 nfs。这个论坛页面解释了如何在本地挂载 nfs。命令是:

mount -t nfs nameofcomputer:/directory_on_that_machine /directory_you_should_have_already_created

nfs 默认启用根压缩,这应该可以解决您的问题。从那里,您只需确保您的程序将其文件存储在 nfs 挂载上。

于 2011-11-29T18:37:49.470 回答
1

在我看来,你在尝试编写病毒。

毫无疑问,你会不同意。

但我敢打赌,安装你的软件的穷人会觉得它是一种病毒,因为它会表现得像一个病毒,使自己难以删除。

只需设置 r/w 标志就足够了。

于 2011-11-29T18:43:15.473 回答