我正在制作一个有权安装文件的 Cydia 应用程序。为此,我需要能够获得对 /Applications 的 root 访问权限。我看过这里,但有点不清楚。有人可以解释得更好一点吗?
谢谢!
永远不要使用带有 setuid 的系统!例如,如果恶意人员将其更改PATH
为/tmp:$PATH
,并且此人将自己的程序添加到 /tmp 并将其命名为“ls”,那么即使运行这个简单的代码也会让他们获得对您设备的 root 访问权限:
setuid(0); system("ls");
相反,您应该使用 exec 系列函数,而不是 execvp/execlp。
你可以用这个
setuid( 0 );
system( "/path/to/script.sh" );
其中脚本的路径是您的应用程序中将安装文件的脚本
或者
setuid( 0 );
system( "cmd" );
其中 cmd 是一个命令,例如
setuid( 0 ); system( "echo Hello World" );
您也可以通过这种方式将日志记录到/tmp
目录或任何其他位置。
setuid( 0 ); system( "echo Hello World >> /tmp/install.log" );
setuid (0);
给它root访问权限并且system (cmd);
是实际的命令
请注意如何使用它,因为 root 可以访问任何地方。