可能重复:
如何以编程方式获得 root 权限?
有没有办法通过 linux 以编程方式向 C 中的用户请求 root 访问权限?
我正在使用原始套接字,因此需要 root 访问权限。
惯用的方法是让你的程序 suid-root,并让前两行main
打开原始套接字并删除 root。
从安全的角度来看,这仍然不太理想,因为:
程序后期的妥协将使攻击者能够访问原始套接字,该套接字可用于许多恶意目的,可能获得足够的信息来提升权限。
任何 suid-root 二进制文件都可能受到动态链接器或之前运行的启动代码中的缺陷的影响main
。虽然这些已经变得越来越少见,但即使是去年,在 glibc 的链接器中使用LD_AUDIT
东西再次发现了一个。由于这个原因,许多具有安全意识的系统(例如 Openwall Linux)完全禁止 suid-root 二进制文件。
一种更安全但更复杂的方法是让您的程序作为具有提升(但仍然是最小)特权的守护程序运行,并让 CLI 接口只是一个简单的包装器,它通过一个普通协议通过 unix 套接字与守护程序通信,该协议可以以机械方式检查漏洞。