为什么许多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代替功能?的主要内容,如果未能解决你的问题,请参考以下文章

常见的Linux发行版本

linux ip 网络网卡配置和流量监控指令

Linux 有多种少发行版?真可谓百花齐放

任选Linux的发行版本(至少三个),分别介绍它们的功能及各自优缺点?

Linux的发行版及主要区别

国内的用户一般用啥Linux发行版?