【问题标题】:How do Unix capabilities work?Unix 功能如何工作?
【发布时间】:2011-09-28 18:53:16
【问题描述】:

似乎从内核 2.2 开始,他们引入了 Capabilities 的概念。根据有关功能的 unix 手册页,它说如果您不是 root 用户,您可以通过在每个线程基础上调用 cap_set_proc 来授予自己的功能。那么这是否意味着如果您正在为 unix 编写恶意软件,您是否只是授予自己一堆功能并破坏系统?如果没有,如何授予运行程序所需的能力?

似乎 Unix 的安全模型是相当有缺陷的 原始的。我说对了吗?

我会更具体:

您如何(以非 root 用户身份运行时)向在不同用户下运行的另一个进程发送信号?在信号手册页上,它说您需要 CAP_KILL 功能来执行此操作。但是,阅读功能手册页后,我不确定如何授予进程该功能。

【问题讨论】:

  • 哦哇..这怎么跑题了?投票结束这个问题的人可以解释一下吗?
  • 看来unix.stackexchange.com这个问题比较好。
  • 这个问题绝对在这里。

标签: unix linux-kernel


【解决方案1】:

来自man cap_set_proc

请注意,默认情况下,唯一可以使用 CAP_SETPCAP 的进程是作为内核线程启动的进程。 (通常这包括 init(8)、kflushd 和 kswapd)。你需要重新编译内核来修改这个默认值。

相信我,如果它那么容易,我相信现在有人会利用它。与其他操作系统相比,Unix 的安全模型可能很简单,但这并不意味着它有“缺陷”。

【讨论】:

  • 好吧,你是说它太原始了,授予功能的唯一方法就是修改内核?
  • 不,我是说 Unix 中的大多数进程永远不需要修改功能,事实上很少有“允许”进程被硬编码到内核中。其余流程遵循正常的安全模型,不依赖能力。
【解决方案2】:

这是不可能的。请改用 Socket 或 File。

【讨论】:

    猜你喜欢
    • 2016-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2012-02-24
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多