我正在使用C和CPP为Linux平台开发一个安全基础软件。我想限制所有用户(甚至是root用户(也修改文件。即没有人可以修改文件。
修改意味着没有人可以写入文件、移动文件或删除文件等。
更准确地说:
我在目录/home/
中有一个名为a.txt的文件,我想对这个文件做一些事情,以便没有人可以写入这个文件、删除这个文件或移动这个文件。
但可以读取文件。
我尝试了chattr
命令:
chattr +i /home/a.txt
它为其他用户解决了我的问题,但是当我切换到超级用户(即 root 用户(进入终端并触发命令时:
chattr -i /home/a.txt
因此/home/a.txt
文件变得可变。 root 用户可以将文件不可变更改为可变。因此,对于root用户来说,问题并没有解决。
我想对这个文件做点什么,所以即使是 root 用户也无法修改这个文件。
我已经在Unix&Linux上问过这个问题,并询问Ubuntu,但没有得到任何答案。
一般来说,Unix系统中root用户的定义是,当用户是root用户时,内核不进行权限检查(有一些微不足道的例外(。
所以,如果你想阻止root做某事,你必须编写一个内核模块来做到这一点。事实上,大多数与安全相关的软件都有内核组件。这将比你想象的要难 - root 基本上可以卸载文件系统并将其挂载到另一台机器上,或者使用不包含您的模块的内核启动。
已经有一些与安全相关的内核模块可以研究:SELinux,AppArmor等(还有Tomoyo和Smack,但在这种情况下它们似乎没有帮助(。根据您的要求,它们可能就足够了。
将应用放入具有磁盘加密功能的设备中。