据国外媒体报道,林纳斯·托瓦兹(Linus Torvalds)近日在在Google+上抱怨道,openSUSE 的安全机制过于烦人,他的女儿从学校打来电话索要Root 密码,只有这样才可以为MacBook Air笔记本设置学校打印机路径。
托瓦兹认为,更改时区,添加新的无线网或设置等操作属于日常任务,而为这些任务设置Root 密码是“愚蠢和错误的”。针对如此设置的开发者,他调侃道:“请你现在就自杀吧,这样世界会变得更好。”
鉴于托瓦兹的知名度,他的言辞迅速吸引了数千条评论,并在业界引起巨大反响。
托瓦兹认为这个问题是由Linux的两个理念所致:一方面,作为Unix系统的子代,Linux是一款真正的多用户系统;另一方面,传统PC系统允许用户完全控制自己的个人电脑。
多用户控制理念必然要求系统限制用户对系统的控制,从而避免对其他用户造成负面影响,例如限制一些常规操作,包括安装新软件,删除现有用户帐户,当然也包括设置或移除打印机。根据Unix的传统,所有这些任务只允许Root帐号操作。
相反,PC操作系统一般面向单个用户,因此用户可以全面控制系统。而对于多用户PC系统用户而言,他们必须谨慎控制系统。
对于上述两种理念,最简单的折中方法就是以Root用户身份登录Linux。然后,用户可以做任何想做的事情,如在错误的地方添加一个空间,或直接清除整个硬盘。
现在,有一种称作sudo的新方法:系统安装过程中创建首位用户,该用户将作为“ALL=(ALL) ALL”存放在/etc/sudoers。然后,用户就可以执行任何受Root限制的操作,但用户仅需输入个人秘密,而不是Root密码。例如,Ubuntu就使用一个专门的管理组,当新用户被添加,管理员可以决定是否给予新用户“sudo权限”。
但是,sudo无法解决托瓦兹和他女儿所遭遇的问题,“执行所有操作”(使用sudo)和“不可执行任何操作”(无sudo)间依然存在真空。托瓦兹所希望的是,一款系统可以在限制危险操作的同时,也能让他的女儿执行简单的日常操作,如设置网络连接或打印机。更进一步地说,IT部门应处理威胁系统安全的操作,而设置打印机一类的日常操作应该由普通用户执行。
举例而言,系统应当可以让所有用户设置打印机,但他们无法移除其他用户的打印机设置;用户可以为USB声卡加载驱动,但无法通过强行加载恶意驱动来破坏系统;用户可以按照程序,但不能删除/usr/bin/git文件。
Unix的传统机制可能难以解决这个问题。但Linux一直在不断进步:扩展文件属性,SELinux的强制访问控制(Mandatory Access Control)以及PolicyKit等服务。Linux缺少一种用户模式: PC和笔记本平台通常由单个用户使用,但其他用户也可以成为“基本管理员”,而传统的Unix多用户模式不适合这种平台。
在这方面,Android模式甚至都更为合适:用户可以更改时区,连接设备至新网络,设置网络打印机,以及随意安装软件。但是,Android用户无法删除内核,安装影响其他程序功能性的程序。
如果托瓦兹的女儿没有在MacBook Air执行所有Android设备操作,很多问题都将迎刃而解。当然,Root密码登录问题仍然有待解决。