jason 发表于 2013-8-12 14:50:15

fluffos权限系统的一个问题

int_load_object()函数调用了check_valid_path()以检查是否有权限装载该物品。该函数调用master的valid_read来确定权限。
大多数的lib中master调用securityd来检查valid_read。
如果securityd被dest后,整个系统就起不来了。因为要重新load securityd,就要通过master检查,而securityd还不存在,需要load_object。

这样,就只能把valid_read的检查直接放在master.c里了。

北大侠客行MUD,中国最好的MUD

sunyc 发表于 2013-8-12 14:56:08

valid_read 是master的一个 apply , 如果这个apply需要加载其他的 Object那必须 要在这个函数里处理才行.

jason 发表于 2013-8-12 15:51:21

valid_read 是master的一个 apply , 如果这个apply需要加载其他的 Object那必须 要在这个函数里处理才行.
sunyc 发表于 2013-8-12 02:56 PM http://pkuxkx.com/forum/images/common/back.gif


    valid_read里加载不了任何object,因为这会引发对valid_read的递归调用。一个办法是对某些特别的object,比如securityd直接return 1,但是fluffos会对.h也做valid_read检查,所以securityd include的所有头文件也必须特殊处理,包括globals.h。这个耦合就有些重了。
    mudos里,load_object是不会检查valid_read的。valid_read是为了避免越权读取文件内容,比如玩家可以看到.c的代码,或者可以删除存档。load_object做这个检查必要性不大。

sunyc 发表于 2013-8-17 10:06:56

我和jason说了, valid_read里面 传入了 load_object这个参数 可以针对load_object一律允许
页: [1]
查看完整版本: fluffos权限系统的一个问题