打印

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支持...
rekcah

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
rekcah

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服务限制了用户组 原来如此,有时间测试一下试试
rekcah

TOP