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