有没有办法以任何方式保护文件,以便其他超级用户无法修改、删除或覆盖它?

有没有办法以任何方式保护文件,以便其他超级用户无法修改、删除或覆盖它?

当输入 a 时,sudo command file有没有办法设置一个参数来锁定文件,这样它就不能被修改、删除或覆盖任何其他超级用户

进一步来说:我想设置一个公告并将其放置在每个用户/home/announcements/文件夹的主文件夹中。

这是一个测试,看看我是否可以将文件插入每个用户的公告文件夹中。

这也是对我是否可以做到这一点并禁止其他普通用户和超级用户在没有我自己的个人用户权限的情况下修改或删除它的测试。

那么,上面描述的这种情况有可能吗?

例如,在编写并保存上述帮助后会添加以下内容吗?

sudo chmod -rv 644 /home/*/announcements/announcement-1

〜或者如果它是可执行的〜

sudo chmod -rv 744 /home/*/announcements/announcement-1

笔记:我有阅读障碍,有时会翻译心语转化为实际的书面/口语对我来说可能具有挑战性。如果您需要我澄清任何事情,请告诉我。

答案1

  1. root 可以访问一切,所以根据你所说的“超级用户”,答案是“也许”或“否”。
  2. 对于普通用户,您可以:

    chown root:root /home/*/announcements/announcement-1
    chmod a-wt /home/*/announcements/announcement-1
    chmod a+r /home/*/announcements/announcement-1
    

    逐行分别表示的含义:
    a.将公告上的所有者更改为 root
    b.从公告中删除写入和粘着位
    c.只授予每个人读取权限。

注1:如果您对“超级用户”的定义=“具有 sudo 访问权限”,那么答案是不!(对不起!);如果还有其他事情:也许,请澄清

答案2

无需进行涉及 SELinux 之类的大量工作,您可以获得的最接近的结果是通过以下方式使文件不可变:

chattr +i /path/to/file

如果为文件设置了不可变标志,则在不首先取消设置不可变标志的情况下,任何人都无法在文件系统级别或更高级别写入、追加、移动、删除或以任何其他方式更改文件。这仍然存在两个问题:

  • 没有办法阻止具有 root 访问权限的人取消设置不可变标志。
  • 无法阻止有权访问存储文件的文件系统的存储设备的人直接修改文件数据。

一旦考虑了 SELinux 或其他 MAC 系统,您就可以大概做你想做的事,但要付出很大的努力才能实现。

话虽如此,您不应该向您不信任的人授予 root 访问权限。

另外,可能值得注意的是,您也无法在 Windows 上实现此目的,任何有权访问管理员帐户(不是列为管理员的帐户,而是实际的“管理员”帐户)的人都可以绕过几乎所有权限检查,就像UNIX 系统上的 root 用户可以。

答案3

不,这是不可能的。

证明:

  1. 最明显的是:超级用户可以执行su ev或创建并运行执行底层系统调用的程序。之后,他们可以发出“解锁”命令,因为他们可以做你能做的任何事情。
  2. 无论如何,他们甚至不需要这样做(因此尝试阻止特定命令是毫无意义的su ev——这也是毫无意义的,因为它无论如何都不起作用)。几乎权限检查允许用户 0 执行任何其他用户可以执行的操作。有一些例外(例如访问 FUSE 文件系统),但一旦用户成为 root,他们就可以像任何其他用户一样运行代码(请参见 1)。

请注意,“超级用户”,我假设您的意思是“超级用户”,即在计算机上拥有管理权限的用户。作弊的方式有多种:

  • 您可以为自己保留超级用户权限,并允许其他人仅访问某些不允许运行任意代码的特定命令。例如,可以运行的用户sudo reboot不是超级用户。可以运行 的用户sudo shsudo tee或者sudo mount是超级用户。
  • 某些安全框架(例如 SELinux)允许设置对用户 ID 0(即 root)的帐户的访问权限,但有一些限制,阻止该帐户执行非 root 帐户无法执行的任何操作。正确设置确实很难,而且在实践中几乎毫无意义,因为如果某人没有从中获得权限,则授予他们访问用户 ID 0 的权限是没有意义的。
  • 您可以向虚拟机或容器中的其他人授予超级用户权限,但将主机上的超级用户权限保留给您自己。

相关内容