QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13044|回复: 15

dbus+policykit提权示例

[复制链接]
发表于 2010-3-5 21:19:54 | 显示全部楼层 |阅读模式
附件说明:
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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
发表于 2010-3-6 00:36:07 | 显示全部楼层
好东西,dbus+policykit,但是Magic貌似没有很好的Policykit支持...
回复

使用道具 举报

 楼主| 发表于 2010-3-6 09:39:28 | 显示全部楼层
原帖由 zy_sunshine 于 2010-3-6 00:36 发表
好东西,dbus+policykit,但是Magic貌似没有很好的Policykit支持...

把文件polkitexamd.c中的
check_authorization_cb
check_auth
两个函数的删除
再认真改写一下org.polkit.example.conf
就可以成为dbus提权的示例了!
回复

使用道具 举报

发表于 2010-3-6 11:20:09 | 显示全部楼层
magic的hal不带policykt。
回复

使用道具 举报

 楼主| 发表于 2010-3-6 13:23:19 | 显示全部楼层
原帖由 sejishikong 于 2010-3-6 11:20 发表
magic的hal不带policykt。

老大policykt是认证用的,没有照样可以提权.
没有policykit使用dbus提权就更容易了.
只是那个.conf需要精心的写,否则任何人都以访问就危险了
回复

使用道具 举报

发表于 2010-3-6 13:27:09 | 显示全部楼层
原帖由 wkt 于 2010-3-6 13:23 发表

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

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

现在Magic的提权方式是consolehelp
回复

使用道具 举报

 楼主| 发表于 2010-3-6 14:01:09 | 显示全部楼层
原帖由 zy_sunshine 于 2010-3-6 13:27 发表

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

现在Magic的提权方式是consolehelp

这个可以让dbus控制那些用户可以访问啊!
回复

使用道具 举报

 楼主| 发表于 2010-3-6 14:06:30 | 显示全部楼层
原帖由 wkt 于 2010-3-6 14:01 发表

这个可以让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"

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2010-3-6 14:10:56 | 显示全部楼层
dbus照样可以控制谁才能提权
当然policykit是可以与用户交互
dbus不行,这样也好,省得每次都要输入密码之类的
回复

使用道具 举报

发表于 2010-3-6 14:31:57 | 显示全部楼层

回复 9# wkt 的帖子

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

使用道具 举报

发表于 2010-9-27 08:03:11 | 显示全部楼层
倒,这个示例在自己家门口,我居然还跑到CSDN花积分买了一个。。。
回复

使用道具 举报

发表于 2010-9-27 10:13:16 | 显示全部楼层
pcwkt 在 csdn 上发表了两个这样的例程,结果我没注意下载了两次源码。。。10分就这么被赚了,还好我的ID分有3000多。。。PS一下,6月份在csdn上的源码才完美。
pcwkt 什么时候写个运行程序的样例吧。
回复

使用道具 举报

发表于 2010-9-27 13:38:31 | 显示全部楼层
大家辛苦了.....
回复

使用道具 举报

 楼主| 发表于 2010-9-27 21:22:15 | 显示全部楼层
原帖由 haulm 于 2010-9-27 10:13 发表
pcwkt 在 csdn 上发表了两个这样的例程,结果我没注意下载了两次源码。。。10分就这么被赚了,还好我的ID分有3000多。。。PS一下,6月份在csdn上的源码才完美。
pcwkt 什么时候写个运行程序的样例吧。 ...

不好意思啊,哪个pcwk其实就是我,我要在csdn上下东西,只能先上传东西骗分
你需要什么样的例子,我可以写啊!
我的邮件是weikting(AT)gmail.com
回复

使用道具 举报

发表于 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 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-25 02:40 , Processed in 0.209786 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表