gpt4 book ai didi

检查命令是否由用户直接运行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:48 26 4
gpt4 key购买 nike

假设出于教育原因,我想更改 kill 的行为。如果用户直接在 shell 中键入它,则什么也不会发生。如果其他一些程序/实体不是用户调用它,它会正常执行。一个环绕的 if 语句可能就足够了,但是我应该在 if 中放入什么?

编辑 我不想在 shell 中执行此操作。我问的是内核编程。

line 2296在内核源代码中,定义了kill。我将在里面的代码周围包装一个 if 语句。在该声明中,应该检查调用它的人是用户还是某个进程。检查是我不知道如何实现的部分。

关于安全

目标:

  • 阻止用户从任何 shell 直接调用 kill
  • 从字面上看,其他一切都很好,不会被阻止

最佳答案

虽然其他答案在技术上是正确的,但我认为他们对这个问题过于严格。你想做的事情不可能以 100% 可靠的方式完成,但你可以通过做出一些合理的假设来非常接近。

特别是如果您将交互式杀戮定义为:

  • 由登录用户拥有的进程调用
  • 直接从/由一个名为shell的进程调用(它可能是一个新进程,也可能是一个内置操作)
  • 由连接到串行/伪终端(可能也属于已登录用户)的进程调用

然后您可以在处理系统调用时检查每个属性并以此方式做出选择。

有些方法并不可靠(sudo + expect + sh 应该可以绕过大部分检查),但它可能足以让你玩得开心。如何实现这些检查是一个较长的故事,可能每一点都值得提出自己的问题。查看有关用户和 pty 设备的文档 - 这应该会给您一个好主意。

编辑:实际上,这甚至可以作为 LKM 实现。 Selinux 可以进行类似的检查。

关于检查命令是否由用户直接运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33819489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com