打印

dbus+policykit提权示例

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

[ 本帖最后由 wkt 于 2010-3-6 09:40 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

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

TOP

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

TOP

magic的hal不带policykt。

TOP

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

TOP

引用:
原帖由 wkt 于 2010-3-6 13:23 发表

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

现在Magic的提权方式是consolehelp

TOP

引用:
原帖由 zy_sunshine 于 2010-3-6 13:27 发表

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

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

TOP

引用:
原帖由 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"
附件: 您所在的用户组无法下载或查看附件

TOP

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

TOP

回复 9# wkt 的帖子

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

TOP

倒,这个示例在自己家门口,我居然还跑到CSDN花积分买了一个。。。
http://haulm.clanmark.com
自古多情空余恨,几人独潇洒。
问君相伴何所思,唯叹红叶飞。
凭栏窗外一皓月,冷风抚面,寒星如冰。
回想前事独伤感,难分难离,倒是山峦草芥,依旧青。

TOP

pcwkt 在 csdn 上发表了两个这样的例程,结果我没注意下载了两次源码。。。10分就这么被赚了,还好我的ID分有3000多。。。PS一下,6月份在csdn上的源码才完美。
pcwkt 什么时候写个运行程序的样例吧。
http://haulm.clanmark.com
自古多情空余恨,几人独潇洒。
问君相伴何所思,唯叹红叶飞。
凭栏窗外一皓月,冷风抚面,寒星如冰。
回想前事独伤感,难分难离,倒是山峦草芥,依旧青。

TOP

大家辛苦了.....

TOP

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

TOP

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

[ 本帖最后由 haulm 于 2010-9-29 08:43 编辑 ]
http://haulm.clanmark.com
自古多情空余恨,几人独潇洒。
问君相伴何所思,唯叹红叶飞。
凭栏窗外一皓月,冷风抚面,寒星如冰。
回想前事独伤感,难分难离,倒是山峦草芥,依旧青。

TOP