中国Linux公社论坛's Archiver

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

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 699  3月  5 20:56 /tmp/test_polkitexmd

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

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

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

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

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

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

magic的hal不带policykt。

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

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

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

[quote]原帖由 [i]wkt[/i] 于 2010-3-6 13:23 发表 [url=http://www.linuxfans.org/bbs/redirect.php?goto=findpost&pid=4911229&ptid=191380][img]http://www.linuxfans.org/bbs/images/common/back.gif[/img][/url]

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

现在Magic的提权方式是consolehelp

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

[quote]原帖由 [i]zy_sunshine[/i] 于 2010-3-6 13:27 发表 [url=http://www.linuxfans.org/bbs/redirect.php?goto=findpost&pid=4911231&ptid=191380][img]http://www.linuxfans.org/bbs/images/common/back.gif[/img][/url]

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

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

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

[quote]原帖由 [i]wkt[/i] 于 2010-3-6 14:01 发表 [url=http://www.linuxfans.org/bbs/redirect.php?goto=findpost&pid=4911235&ptid=191380][img]http://www.linuxfans.org/bbs/images/common/back.gif[/img][/url]

这个可以让dbus控制那些用户可以访问啊! [/quote]
我在给个例子:
更新:
去掉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"
[attach]33918[/attach][attach]33919[/attach]

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

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

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

回复 9# wkt 的帖子

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

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

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

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

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

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

大家辛苦了.....

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

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

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

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

[[i] 本帖最后由 haulm 于 2010-9-29 08:43 编辑 [/i]]

haulm 发表于 2010-9-30 07:15

[quote]原帖由 [i]wkt[/i] 于 2010-9-27 21:22 发表 [url=http://www.linuxfans.org/bbs/redirect.php?goto=findpost&pid=4926534&ptid=191380][img]http://www.linuxfans.org/bbs/images/common/back.gif[/img][/url]

不好意思啊,哪个pcwk其实就是我,我要在csdn上下东西,只能先上传东西骗分
你需要什么样的例子,我可以写啊!
我的邮件是weikting(AT)gmail.com [/quote]
太感谢了,楼主的程序例程正常,倒是 Magiclinux 的 dbus 组件有问题才导致程序一些奇怪的问题。

页: [1]

Powered by Discuz! Archiver 6.1.0F  © 2001-2007 Comsenz Inc.