这可能是一个简单的问题,但如何在 c 控制台应用程序中向用户“请求”系统/根权限。我需要写信给/Private/etc,但我不能。这是针对 mac/unix 的。
我已经看到它被用在其他控制台命令中,例如当您运行以下命令:“sudo /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder”时,终端会要求您输入密码。我该怎么做呢?
谢谢,JNK
没有任何系统调用可以让进程获得 root 权限。你可能会期待seteuid
以这种方式工作,但它只能由具有 root 进程的进程使用(非特权进程只能将 euid 设置为等于 uid)。
sudo
很特殊,因为它的可执行文件具有 setuid 权限。这意味着当sudo
运行时,它以拥有它的用户(root)身份运行,而不是以执行它的用户身份运行。sudo
可以通过检查密码和读取配置文件来验证您是否具有 root 访问权限。如果检查成功,则调用fork
and execve
执行您请求的命令。
要在非特权应用程序中获得 root 权限,您必须克服一些困难。您可以使用fork
/execve
打电话sudo
为了你自己的命令。经过身份验证后,您将拥有一个特权子进程。您可以传递特殊参数或环境变量,以便子进程可以跳转到旨在获得特权的代码。父进程只会等待子进程完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)