从我在Linux下运行的单声道应用程序中,我想以root
用户身份运行另一个应用程序。目前我使用Process.Start
,正在运行gksudo
。
此解决方案在一种情况下运行良好 - 安装了gksudo
。
我需要一种机制来提升单声道程序集的权限(不一定是另一个进程),它不依赖于特定的,依赖桌面的应用程序,如gksudo
或kdesu
,而不是控制台 - 基于(好的ol' sudo
)。
实际上我相信我需要一种PAM-ify我的应用程序。
该解决方案不一定符合Windows标准,但这将是一个不错的奖励。
我已经看到了很多可能的问题答案,但没有一个能解决所有问题。
一个非常好的方法是https://stackoverflow.com/a/16276287/882200,但它需要以root身份运行程序集,这是不可能的。
这激发了我尝试新方法的灵感。我试过了
Process.Start("whoami", "otheruser", password, "");
输出应为otheruser
,但不是。
请注意我将域名(最后一个参数)留空(可以吗?)并根据this example填写密码。
这个解决方案不是最好的解决方案 - 它要求我提供获取密码的方法,但这是可以接受的,尽管不起作用。
对我来说,最好的选择是让我的环境选择正确接收密码的方式 - 通过Qt / GTK弹出窗口或控制台提示符。
要记住的最后一件事 - 以root身份运行应用程序我很乐意提供一个sudoer密码,不一定是root密码(根据sudoers
配置)。