2010年3月5日星期五

UAC



为求一个 StartCraft2 测试的帐号,我把珍藏多年的原版 StarCraft CD-Key 翻出来,去美服战网注册了一下。眼看正式版开服在即,我的申请多半没戏,抽空玩玩前作也算热身。在 Win7 下安装完游戏登录战网更新补丁时出了点问题,总提示无法识别游戏版本。Google 了一下这个问题的解答,都没说到点子上。正确的做法是:

启动游戏时用右键,选择 Run as administrator 或者干脆把 UAC (User Access Control) 关掉


上礼拜一相识二十多年的老哥半夜来我敲我家门让我帮忙修电脑,因为一个炒股软件在他的新笔记本上运行不了。半分钟搞定,方法同上。

从 Vista 开始引入的这套 UAC 机制,据说是抄袭借鉴了 Unix/Linux 里面的 sudo 命令。不同的是,sudo 要输密码而 UAC 不用。

Win3.x 用过不记得了,Win9x 基本没有用户权限管理。到了 WinNT/2k/xp/2k3 时代,权限管理在我看来已经非常够用了,访问控制甚至比 Unix/Linux 里 owner/group/others 的三组 rwx 小开关精密得多。可毛病出在人身上,就像当年一个墨西哥老师常说的“问题总在桌子和椅子之间”。很多电脑用户根本不具备任何安全常识。就比方说我爸,事实证明他若有管理员权限,一天之内就能中 N 种病毒直至非重装不可。这样的用户不配当系统管理员。当然,话说得太直白让人很没面子,毕竟人家是付了钱的,买了系统不给权限还要羞辱人家很不厚道。于是从 Vista 开始,系统的第一个用户仍然是名义上的管理员,但真要干点什么大事就会被 UAC 拦住。新的程序会自动弹出一个确认框,老旧的程序(比方说这个有十多年历史的 StarCraft)根本不知道 UAC 的存在就直接报错返回了。

安全的最大隐患是人,当一个管理员主动运行木马把自己的银行账户发送给网上某台服务器时,电脑如何知道眼前的这人是有心还是无意?最无耻的也是人,自己犯错却可以推给无生命的东西,比如操作系统故障,比如网络游戏上瘾,比如枪炮火药原子弹,比如三年“自然”灾害。

UAC 实在是一个没有办法的办法,含糊了管理员的概念,(暂时)分掉了机器所有者的部分权限。可以想见在不久的将来,在病毒制造者和菜鸟用户的共同努力下这个方法也会渐渐失效,到时又会有更麻烦的解决方案。

权力与能力的斗争自古以来就让人头疼:

公司的 IT 管理员是否应该有最高权限,包括查看大老板电脑上的资料?技术派的观点倾向于肯定,不然 IT 怎么帮老板修电脑。从组织架构的角度看这个授权是不合理的 —— 凭什么一个和公司主营业务不相干的人可以了解那么多信息?这相当于让负责誊写盖章工作的太监掌实权。

一家上市公司到底谁说了算?CEO 还是董事长?前者是技术派,了解业务、人员和运作;后者是最大股东,换句话说公司是他的财产。

帝王和宰相谁说了算?前者拥有帝国,后者由前者任命,而后者太能干了对前者又是威胁,反客为主是常有的事。朱元璋集权力和能力于一身,他主张大权不可旁落,可偏偏后世的子孙没几个争气的,有十几年不上朝的,有专心做木匠的,有喜欢自己给自己封官玩的...

有权力的不一定有能力,有能力的不一定值得信任。世袭制还是代理人制,没有万全的选择。古往今来无数智慧的头脑都没有解决这个问题,我们又怎能指望电脑来帮我们决定,哪些决定我们要自己做,哪些权限我们可以委托给机器,哪些我们决定委托给机器做的决定在何种特殊情况下应返回给我们再次确定。这是一个关于决定的决定,也可能是一个关于决定的决定的决定,今后会变成关于决定的决定的决定的决定,请翻阅“递归”词条,很多制度的设计灵感来源于此。

没有评论: