2011-09-28 91 views
0

看来,从内核2.2开始,他们引入了功能的概念。根据功能的Unix手册页,它说,如果你不是root用户,你可以通过调用cap_set_proc每个线程的基础授予你自己的能力。那么这是否意味着如果你正在为UNIX编写一个恶意软件,你是否会给自己一些功能并危及系统呢?如果不是,那么如何授予运行该程序所需的功能?Unix功能如何工作?

看来Unix的安全模式相当有 有缺陷 原始。我是否正确?你如何(在作为非root用户运行)发出一个信号,即不同的用户下运行的另一个进程

我会去更具体?在信号手册页上,它表示您需要CAP_KILL功能来执行此操作。但是,阅读能力手册页,我不知道我如何授予一个进程的能力。

+0

哦哇..这个题目是怎么回事?有谁可以投票结束这个问题,请解释一下? – JosephH

+1

似乎http://unix.stackexchange.com/是这个问题的一个更好的地方。 –

+0

这个问题是*绝对*在这里的话题。 – caf

回答

-1

这是不可能的。改为使用套接字或文件。

1

man cap_set_proc

请注意,默认情况下,具有可用CAP_SETPCAP给他们的唯一方法是流程开始作为一个内核线程。 (通常这包括init(8),kflushd和kswapd)。您将需要重新编译内核以修改此默认值。

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

+0

好吧,你告诉我,它是如此的原始,授予功能的唯一方法是修改内核? – JosephH

+1

不,我说的是Unix中的大多数进程永远不需要修改功能,实际上很少有“允许的”进程被硬编码到内核中。其余的进程遵守正常的安全模型,而不依赖于功能。 –