Ubuntu 如何在vala脚本中运行pkexec?

Ubuntu 如何在vala脚本中运行pkexec?,ubuntu,vala,Ubuntu,Vala,我想使用root权限运行GUI。当用户运行脚本时,将打开一个弹出窗口,询问root密码,稍后将打开GUI。我知道这可以通过pkexec完成。但我不知道如何在vala脚本中实现pkexec。简而言之,我想通过sudo权限运行我的应用程序。有人能为此提出解决方案吗?只需从中获取示例代码,并将其修改为运行您的my\u应用程序即可 main.vala(应作为普通用户运行的可执行文件的代码): 提升的\u main.vala(应作为root运行的可执行文件的代码): 像往常一样编译两个可执行文件: val

我想使用root权限运行GUI。当用户运行脚本时,将打开一个弹出窗口,询问root密码,稍后将打开GUI。我知道这可以通过pkexec完成。但我不知道如何在vala脚本中实现pkexec。简而言之,我想通过sudo权限运行我的应用程序。有人能为此提出解决方案吗?

只需从中获取示例代码,并将其修改为运行您的
my\u应用程序即可

main.vala
(应作为普通用户运行的可执行文件的代码):

提升的\u main.vala
(应作为root运行的可执行文件的代码):

像往常一样编译两个可执行文件:

valac -o my_app main.vala
valac -o my_elevated_app elevated_main.vala
请注意,使用上述代码,您必须首先安装提升的可执行文件(即到
/usr/local/bin/
/usr/bin/
或PATH环境中的任何其他目录),例如:

sudo install -m 755 my_elevated_app /usr/local/bin
当然,您可以更改代码以在本地工作目录中运行它,但是以root用户身份运行某些东西是危险的,您应该始终确保运行的是正确的可执行文件。有些开发人员甚至只允许特定的文件名(如
/usr/bin/my_\u app

当您现在运行
/my_app
时,应该会收到带有GUI的
pkexec
提示您输入密码,并且在成功验证后,应该启动
my_app
过程

如果一切正常,您应该看到以下输出:

$ ./my_app
I am running as a normal user
I am running as root

上述两个应用程序都是控制台应用程序,但GUI应用程序也应该是一样的(只需像往常一样使用Gtk创建您的windows,等等)。

感谢您的回答。显然,我的提升版GUI应用程序是我在运行两个vala脚本(main.vala和main1.vala)后得到的应用程序。那么,如何调用这些脚本呢(或编译并运行两个脚本后的应用程序)在上述示例代码中?我已经澄清了我的答案。请不要在vala的上下文中使用术语
script
。vala
文件称为
源文件
,编译后的结果称为
应用程序
(或简称
app
)。为了在技术上100%正确,我们应该将其称为
可执行文件
。源文件的内容称为
源代码
(简称
代码
)。运行
/my_app
时出错。这是。正如您所说,我正在从main.vala调用
gui_app
。这些是与显示服务器相关的错误,请访问askubuntu.com:可能重复
sudo install -m 755 my_elevated_app /usr/local/bin
$ ./my_app
I am running as a normal user
I am running as root