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