为什么许多Linux发行版使用setuid代替功能?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么许多Linux发行版使用setuid代替功能?相关的知识,希望对你有一定的参考价值。
capabilities(7)
是不向进程授予所有root特权的好方法,并且可以使用AFAIK代替setuid(2)
。根据this和其他许多人的说法,
“不幸的是,仍有许多二进制文件设置了
setuid
位,而应将它们替换为capabilities
。”
作为一个简单的例子,在Ubuntu上,
$ ls -l `which ping`
-rwsr-xr-x 1 root root 44168 May 8 2014 /bin/ping
您知道,在文件上设置suid / guid会将有效用户ID更改为root。因此,如果启用了suid的程序存在缺陷,那么非特权用户可以突破并成为root用户的等效项。
我的问题是,为什么许多Linux发行版在设置setuid
时仍可以使用capabilities
方法,而对安全性的关注较少?
答案
这可能不会给原因一些人以某种方式决定某种方式,但是某些审核工具和界面可能不了解功能。
[一个例子是proc_connector netlink接口和基于它的程序(例如forkstat
):发生了一个事件,该事件更改了其凭据,但没有更改它的功能。
FWIW,为什么您无法在类似Debian的发行版上获得forkstat
CAP_NET_RAW
而不是setuid的原因,是因为这取决于您已经安装的[[before上已经存在的ping(8)
实用程序[ C0]。从setcap(8)
:
ping
以上是关于为什么许多Linux发行版使用setuid代替功能?的主要内容,如果未能解决你的问题,请参考以下文章