WEB开发网
开发学院操作系统Linux/Unix POSIX 文件能力:分配根用户的能力 阅读

POSIX 文件能力:分配根用户的能力

 2008-11-12 08:30:08 来源:WEB开发网   
核心提示: 这种情况的一个例子是 Fedora 上的 at,at 程序允许用户将作业安排在以后某个时间执行,POSIX 文件能力:分配根用户的能力(8),例如,可以在下午 2 点提醒用户打电话: echo "xterm -display :0.0 -e"echo Call cust

这种情况的一个例子是 Fedora 上的 at。at 程序允许用户将作业安排在以后某个时间执行。例如,可以在下午 2 点提醒用户打电话:

echo "xterm -display :0.0 -e
"echo Call customer 555-5555; echo ^V^G; sleep 10m" " |
at 14:00

所有 UNIX 系统上都有 at 程序,任何用户都可以使用它。用户共享 /var/spool 下面的一个公用作业假脱机文件。因此它的安全性极其重要,但是它是跨许多系统工作,所以不能使用系统特有的安全机制(比如能力)。无论如何,它试图通过使用 setuid(2) 减少特权。在此基础上,Fedora 通过应用补丁使用 PAM 模块。

要想查明非根用户是否可以运行不带 setuid 位的 at,最快的方法是删除 setuid 位,然后授予所有能力:

chmod u-s /usr/bin/at
setfcaps -c all=p -e /usr/bin/at
su - (non root user)
/usr/bin/at

通过指定 -c all=p,我们请求在 /usr/bin/at 上设置包含所有能力的允许能力集。所以,运行这个程序的任何用户都拥有所有根特权。但是在 Fedora 7 上,运行 /usr/bin/at 会产生以下结果:

You do not have permission to run at.

如果下载并研究源代码,就可以找到原因,但是这些细节对本文没有帮助。肯定可以修改源代码,让 at 能够使用文件能力,但是在 Fedora 上简单地分配文件能力并不能取代 setuid 位。

文件能力细节

在前面,我们使用一种专用的格式给可执行程序分配能力。我们对 ping 使用了以下命令:

  setfcaps -c cap_net_raw=p -e /bin/ping

setfcaps 程序通过设置一个名为 security.capability 的扩展属性,设置目标文件的能力。-c 标志后面是一个格式比较随意的能力列表:

上一页  3 4 5 6 7 8 9 10  下一页

Tags:POSIX 文件 能力

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接