20.6 POSIX能力
Linux系统按照POSIX的“能力(capabilities)”概念把root账号的权力进行了细分。例如,一种能力允许一个进程在网络套接口和网络接口上执行特权操作,而另一种能力允许一个进程设定和硬件有关的选项。能力可以按照系统化的方式继承、掩码和赠予,程序借助这些方式可以不必获得root账号的全部权力就能执行有特权的任务。因为能以比传统的UNIX更严格地方式分配特权,所以出现安全漏洞,导致不受限制root访问权限泄露的可能性降低了—至少从理论上说是这样。
在实际中间,系统管理员对能力体系的兴趣有限。支持能力的软件不要求在系统管理上专门注意,它只是把自己设为运行在一种更受限的模式下而已。但是大多数UNIX和Linux软件依然认定了传统的超级用户有全部权力的模型,禁用这个模型会造成很大麻烦,付出很多牺牲。Linux内核为了保证对传统UNIX软件的兼容性所做的一些妥协就是能力体系比它实际应该的更“粗略”[51]。
最后的结果是POSIX能力赢得了不错的口碑,但在现实中的使用却很有限。从很大程度上说,它们都被忽略了,但有一个唯一的例外:内核每次执行一个新程序的时候,它都要施加一个“全局能力限制集合”(通过文件/proc/sys/kernel/cap-bound访问和设定)。如果您想要在整个系统内禁用一种或者多种能力,您可以把它们加到这个全局限制集合里。参见man capabilities的结果了解更多内容。
图书导读






