
□ daemon: /adm/daemons/securityd.c

    这个 daemon 掌管所有对档案「读」跟「写」的同意权，所采用的逻辑
很简单：

    「当你要对一个目录作读或写的动作时，如果有人说可以，而且没有人
反对，那麽就可以，否则甭想。」

    什麽意思呢？这代表所有读写动作必须经过两段检查：首先，这个档案
必须存在於一个允许你存取的目录，或这个目录的子目录中，程式的作法是
首先检查这个档案所在的目录 ，看看是否在「允许存许(trusted)」的名单
中有你的名字，如果没有，或这个目录根本没有允许存取名单，那麽就检查
这个目录所在的目录，..... 直到根目录为止。

    如果在某一阶层目录的允许存许名单发现了你的名字，先别太高兴，这
只是「有人说可以」而已，还要再检查有没有人说不可以，换句话说，这个
档案不能是一个存在於禁止你存取的目录，或这个目录的子目录中的档案，
程式的作法和前面很类似，先检查这个档案所在的目录，看看是否「禁止存
取(exclude)」的名单中有你的名字，如果没有 ，或这个目录根本没有禁止
存取名单，那麽就检查上一层的目录，..... 直到根目录为止。

    如果一直到根目录为止，所有的禁止存取名单中都没有你的名字，那麽
恭喜你，这表示「没有人说不可以」，你可以存取这个档案。

    在理想的情况下，是应该记录所有巫师的存取资料的，但是我们很快会
发现这样做是很愚蠢的，因为很多目录的允许存取名单或禁止存取名单往往
会有一模一样的内容，这表示大部分人可以被归类成几个拥有相同存取权的
群体(group)， 因此前面的叙述中，「名字」一词可以被代换成「名字或所
属群体」。

    群体的划分可以很简单，也可以很复杂，我们采用简单的方式：如果在
「巫师状态表(wiz_status)」中有你的名字，那麽你就是属於表中所定义的
群体，否则，我们用 MudOS 所提供的 efun 将使用者划分成 (wizard)、
(player)、(object) 三个群体。你是否注意到群体的名称都加上一个括号
，目的是为了防止有人取的名字和群体一样而造成混乱。

    了解了上面所说的概念之後，其他的细节建议你直接去看原始码比较快
，这个 security 系统很单纯，也很容易了解，如果你发现什麽漏洞，应该
也不难改进。

(Elon@ES2 11-27-94)
(Annihilator@ES2 12-13-94)
