gpt4 book ai didi

c - 使用 c 访问/私有(private)/等

转载 作者:太空狗 更新时间:2023-10-29 16:09:33 44 4
gpt4 key购买 nike

这可能是一个简单的问题,但我如何在 c 控制台应用程序中向用户“请求”系统/root 权限。我需要写信给/Private/etc 但我不能。这是针对 mac/unix 的。

我已经看到它被用在其他控制台命令中,例如当您运行以下命令时:“sudo/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder”,终端会要求您输入密码。我该怎么做?

谢谢,JNK

最佳答案

没有任何系统调用可以让进程获得 root 权限。您可能希望 seteuid 以这种方式工作,但它只能由具有根进程的进程使用(非特权进程只能将 euid 设置为等于 uid)。

sudo比较特殊,因为它的可执行文件有setuid权限。这意味着当 sudo 运行时,它以拥有它的用户 (root) 而不是执行它的用户身份运行。 sudo 可以通过检查密码和读取配置文件来验证您是否具有 root 访问权限。如果检查成功,它会调用 forkexecve 来执行您请求的命令。

要在非特权应用程序中获得 root 特权,您将不得不跳过一些障碍。您可以使用 fork/execve 为您自己的命令调用 sudo。一旦通过身份验证,您将拥有一个特权子进程。您可以传递一个特殊的参数或环境变量,以便子进程可以跳转到旨在获得特权的代码。父进程只会等待子进程完成。

关于c - 使用 c 访问/私有(private)/等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556186/

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