【问题标题】:How to restrict anyone (root user also) to modify file in Linux如何限制任何人(也包括 root 用户)在 Linux 中修改文件
【发布时间】:2020-04-16 13:54:07
【问题描述】:

我正在使用 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&LinuxaskUbuntu 提出了这个问题,但没有得到任何答案。

【问题讨论】:

  • 这个问题与您的previous one 有何不同?您之前的问题是故意关闭的:它与编程无关。为什么你又问同样的问题?
  • @Tsyvarev 我已经在我问这个问题的问题中提到了我在 Unix 和 Linux 上没有得到答案,askUbuntu。关于之前的同一个问题,jww 和其他一些成员在这里关闭了我的问题,以便我可以得到答案。在另一个平台(Unix&Linux 和 askUbuntu)上,我没有得到答案,你从这里关闭了问题。你告诉我我应该在哪里提问。
  • @Tsyvarev 没有人回答我的朋友。
  • 实际上,带有短语“这能回答你的问题吗?”的评论当有人投票以duplicate 或标记为关闭问题时,Stack Overflow 自动生成该问题的链接。通常重复的问题已经有答案(至少有一个),但是当有人重复他/她的问题时,旧问题可能会被标记为新问题的重复,即使旧问题没有答案。

标签: security permissions linux-kernel filesystems selinux


【解决方案1】:

一般来说,Unix系统中root用户的定义是当用户为root时内核不做权限检查(有的insignificant exceptions)。

所以,如果你想阻止 root 做某事,你必须编写一个内核模块来做这件事。事实上,大多数与安全相关的软件都有内核组件。这将比您想象的要难 - root 基本上可以卸载文件系统并将其安装在另一台机器上,或者使用不包含您的模块的内核启动。

您已经可以查看一些与安全相关的内核模块:SELinuxAppArmor 等(还有TomoyoSmack,但在这种情况下它们似乎没有帮助)。根据您的要求,它们可能就足够了。

【讨论】:

    猜你喜欢
    • 2012-11-21
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2013-11-06
    相关资源
    最近更新 更多