wkt 发表于 2010-3-5 21:19:54

dbus+policykit提权示例

附件说明:
polkitexamd.c:
提供一个dbus服务,有root权限
普通程序可以通过它作些root才能做的事---此例子为写文件
但是必须先要通过认证

org.polkit.example.conf:
名为org.polkit.example的bus的策略

org.polkit.example.policy
注册action_id及其策略

org.polkit.example.service:
说明bus和程序的关联

dbustest.py和dbustest-glib.c:
测试效果

测试:
$make
$make install
$./dbustest.py ###向'/tmp/lll'添加内容:'Hi,peoples\n'
$./dbustest-glib ###"/tmp/test_polkitexmd"添加内容:"Hello from dbustest-glib.c!\n"
$ls /tmp/test_polkitexmd -l
-rw-r--r-- 1 root root 6993月5 20:56 /tmp/test_polkitexmd

[ 本帖最后由 wkt 于 2010-3-6 09:40 编辑 ]

zy_sunshine 发表于 2010-3-6 00:36:07

好东西,dbus+policykit,但是Magic貌似没有很好的Policykit支持...

wkt 发表于 2010-3-6 09:39:28

原帖由 zy_sunshine 于 2010-3-6 00:36 发表 http://www.linuxfans.org/bbs/images/common/back.gif
好东西,dbus+policykit,但是Magic貌似没有很好的Policykit支持...
把文件polkitexamd.c中的
check_authorization_cb
check_auth
两个函数的删除
再认真改写一下org.polkit.example.conf
就可以成为dbus提权的示例了!

sejishikong 发表于 2010-3-6 11:20:09

magic的hal不带policykt。

wkt 发表于 2010-3-6 13:23:19

原帖由 sejishikong 于 2010-3-6 11:20 发表 http://www.linuxfans.org/bbs/images/common/back.gif
magic的hal不带policykt。
老大policykt是认证用的,没有照样可以提权.
没有policykit使用dbus提权就更容易了.
只是那个.conf需要精心的写,否则任何人都以访问就危险了

zy_sunshine 发表于 2010-3-6 13:27:09

原帖由 wkt 于 2010-3-6 13:23 发表 http://www.linuxfans.org/bbs/images/common/back.gif

老大policykt是认证用的,没有照样可以提权.
没有policykit使用dbus提权就更容易了.
只是那个.conf需要精心的写,否则任何人都以访问就危险了
就是担心这个地方,如果不加policykit认证的话会很危险

现在Magic的提权方式是consolehelp

wkt 发表于 2010-3-6 14:01:09

原帖由 zy_sunshine 于 2010-3-6 13:27 发表 http://www.linuxfans.org/bbs/images/common/back.gif

就是担心这个地方,如果不加policykit认证的话会很危险

现在Magic的提权方式是consolehelp
这个可以让dbus控制那些用户可以访问啊!

wkt 发表于 2010-3-6 14:06:30

原帖由 wkt 于 2010-3-6 14:01 发表 http://www.linuxfans.org/bbs/images/common/back.gif

这个可以让dbus控制那些用户可以访问啊!
我在给个例子:
更新:
去掉policykit认证
修改org.polkit.example.conf只root和test组成员
才能访问接口polkit.example.interface,
此例子写文件的动作就是通过该接口的WriteFile方法实现的


polkitexamd.c:
提供一个dbus服务,有root权限
普通程序可以通过它作些root才能做的事---此例子为写文件
但是必须先要通过认证

org.polkit.example.conf:
名为org.polkit.example的bus的策略

org.polkit.example.policy
注册action_id及其策略

org.polkit.example.service:
说明bus和程序的关联

dbustest.py和dbustest-glib.c:
测试效果

测试:
$make
$make install
$./dbustest.py ###向'/tmp/lll'添加内容:'Hi,peoples\n'
$./dbustest-glib ###"/tmp/test_polkitexmd"添加内容:"Hello from dbustest-glib.c!\n"

wkt 发表于 2010-3-6 14:10:56

dbus照样可以控制谁才能提权
当然policykit是可以与用户交互
dbus不行,这样也好,省得每次都要输入密码之类的

zy_sunshine 发表于 2010-3-6 14:31:57

回复 9# wkt 的帖子

o 明白了,是修改了后台dbus服务限制了用户组:-D 原来如此,有时间测试一下试试

haulm 发表于 2010-9-27 08:03:11

倒,这个示例在自己家门口,我居然还跑到CSDN花积分买了一个。。。

haulm 发表于 2010-9-27 10:13:16

pcwkt 在 csdn 上发表了两个这样的例程,结果我没注意下载了两次源码。。。10分就这么被赚了,还好我的ID分有3000多。。。PS一下,6月份在csdn上的源码才完美。
pcwkt 什么时候写个运行程序的样例吧。

fox_eagle2003 发表于 2010-9-27 13:38:31

大家辛苦了.....

wkt 发表于 2010-9-27 21:22:15

原帖由 haulm 于 2010-9-27 10:13 发表 http://www.linuxfans.org/bbs/images/common/back.gif
pcwkt 在 csdn 上发表了两个这样的例程,结果我没注意下载了两次源码。。。10分就这么被赚了,还好我的ID分有3000多。。。PS一下,6月份在csdn上的源码才完美。
pcwkt 什么时候写个运行程序的样例吧。 ...
不好意思啊,哪个pcwk其实就是我,我要在csdn上下东西,只能先上传东西骗分
你需要什么样的例子,我可以写啊!
我的邮件是weikting(AT)gmail.com

haulm 发表于 2010-9-29 01:10:49

polkit 写文件的例子我测试过是可以正常工作的,但是一时间我没能搞懂这套东西的前前后后,特别是 action_id 的定义后面才闹明白是可以自定义的。我想实现的是让 polkit 认证 root 密码然后成功运行 pppoe-start 进行拨号,曾经直接在例子写入文本那几句里直接运行 system("/xx/pppoe-start"),程序倒是仍然正常编译,但是类似printf之类的函数都不能被执行。
polkit 编程方面资料翻译很少,我英文太烂看得头疼。
你能写一个类似的程序,让普通用户运行root权限才能用的例子,我就在此感谢了。

[ 本帖最后由 haulm 于 2010-9-29 08:43 编辑 ]
页: [1] 2
查看完整版本: dbus+policykit提权示例