gpt4 book ai didi

macos - 是否可以以使用 getuid() 登录用户 ID 的 root 身份运行?

转载 作者:行者123 更新时间:2023-12-03 17:48:41 24 4
gpt4 key购买 nike

我正在开发一个 Mac Cocoa 应用程序,需要运行第二个应用程序。以下是我需要运行的第二个应用程序的相关形式

int main(int argc, const char * argv[]) {
uid_t gRealUserID = getuid();
printf("User id:%d\n",gRealUserID);
return 0;
}

问题是第二个终端应用程序应该运行 root 并且“getuid()”获取当前登录的用户。我的第一个应用程序以 root 权限运行。

简而言之,如果我将上述代码构建为名为“test”的可执行文件并在终端中运行

$ ./test
User id:501

如果我们运行

$ sudo ./test
User id:0

我想知道如果我执行这样的命令,是否有任何可能的方法

$ sudo ./test

打印

User id:501

有趣的观察:如果我使用SFAuthorization从非root应用程序授权root权限,它会按预期工作。但不幸的是我现在不能这样做,请执行以下操作一些客户要求发生变化

最佳答案

sudo 运行一个程序,就好像它是由 root 启动的一样,因此 getuid 返回 0。我认为您正在寻找的是一个设置用户 ID 程序 - 这是一个文件模式设置,它将程序的有效 UID 设置为可执行文件所有者的 UID,因此 root 拥有的可执行文件将以 root 的有效 ID 执行,但启动程序的用户的真实ID

有关详细信息,请参阅 chmod(2)geteuid(2)getuid(2) 等的手册条目。

HTH

关于macos - 是否可以以使用 getuid() 登录用户 ID 的 root 身份运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36098329/

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