gpt4 book ai didi

c++ - 如何以编程方式获得 root 权限?

转载 作者:IT老高 更新时间:2023-10-28 12:41:13 24 4
gpt4 key购买 nike

我正在编写一些软件(在 C++ 中,用于 Linux/Mac OSX),它以非特权用户身份运行,但在某些时候需要 root 特权(以创建新的虚拟设备)。

以 root 身份运行此程序不是一种选择(主要是出于安全问题),我需要知道“真实”用户的身份 (uid)。

有没有办法模仿“sudo”命令行为(询问用户密码)来临时获得 root 权限并执行特定任务?如果是这样,我会使用哪些功能?

非常感谢您的帮助!

最佳答案

如果您每次都需要 root 权限,最好的办法是以 root 身份启动您的程序并使用 setuid 删除它们(在子进程中)和 setgid .这就是 apache 在需要绑定(bind)到受限端口 80 时所做的。

如果获得root权限是异常(exception)而不是规则并且程序交互运行,另一种方法是编写程序add_interface并执行

sudo add_interface args

让 sudo 为您处理身份验证。您可能想要使用图形前端而不是 sudo,例如 gksu、gksudo、kdesu 或 kdesudo。我不会尝试自己实现安全密码输入;这可能是一个棘手的问题,您可能会留下巨大的安全漏洞和功能问题(您支持指纹读取器吗?)。

另一种选择是polkit ,以前称为 PolicyKit。

关于c++ - 如何以编程方式获得 root 权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2483755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com