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

标签 c linux filesystems system disk-partitioning

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

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

编辑:因为我从 Basile Starynkevitch 那里得到意见,如果我做这样的事情,我将犯下编程中最严重的错误,但你可以给我提供建议,考虑到这是一个实验项目,我可以在 VFS 中做一些改变层,以便它可以工作。

最佳答案

你可以使用 chattr ,例如

chattr +i yourfile

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

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

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

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

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

所以我认为您不应该花一分钟时间来了解如何使 root 更难更改您宝贵的文件。将它们保留为其他 root 文件...

哲学咆哮

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

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

关于c - 防止对文件系统或分区的一部分进行未经授权的写访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314813/

相关文章:

使用 bluetooth_client_connect_service() 连接到蓝牙设备 - gnome-bluetooth 3.8.2.1

c - 如何在C中获取指针的实际地址?

linux - Upstart 任务在成功完成后挂起

java - ElasticSearch OOM 有问题,有足够的 RAM 和 ulimits 备用

macos - 如何检测文件是否被关闭?

javascript - 使用文件系统包读取文件

c - 这个格式说明符是什么意思?

linux - statsd 当前时间是 future 两个小时——如何解决?

c# - 递归列出给定路径下的所有文件和文件夹?

c - C 程序中数组未完全解析