防止对文件系统或分区的一部分进行未经授权的写访问

时间:2011-11-29 17:11:12

标签: c linux filesystems system disk-partitioning

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

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

编辑:正如我从Basile Starynkevitch那里得到的意见那样,如果我做这样的事情,我会犯下最糟糕的编程罪,但你可以提供我作为实验项目的建议,我可以在VFS上做一些改动这样就可以了。

3 个答案:

答案 0 :(得分:2)

您可以使用chattr,例如

chattr +i yourfile

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

如果他们真的想要(例如,他们可以更新和破解内核),则无法禁止具有root访问权限的人或具有物理访问权限的人访问,删除,更改您的文件。详细了解trusted compute base

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

根据Linux上root的定义,它可以执行任何操作......您将无法禁止他擦除或更改数据......具有root访问权限的人可以写任意字节在磁盘上的任意位置。

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

所以我认为你不应该费心,甚至花一点时间来了解如何让root更难以改变你珍贵的档案。将它们保留为其他root个文件......

哲学侠盗

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

Unix系统管理员理解这一事实:它是他们文化的一部分。 (这可能与Windows管理文化形成对比)。他们知道什么时候要小心,他们不希望软件以root为基础防止错误。

答案 1 :(得分:1)

为了使用root压缩(这使得root甚至无法查看本地用户的文件),您可以设置本地nfs。这个forum page解释了如何在本地挂载nfs。命令是:

mount -t nfs nameofcomputer:/ directory_on_that_machine / directory_you_should_have_already_created

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

答案 2 :(得分:1)

听起来像是在试图写病毒。

毫无疑问,你会不同意。

但我愿意打赌那些安装你软件的穷人会感觉它是一种病毒,因为它会像一个人一样难以移除。

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