文章目录

这个世界上最先有的是 su。

su 是 switch user 的简写,不是 super user 的简写。顾名思义,使用 su 命令可以切换用户。过程中 su 命令会要求目标用户的密码,来验证人的身份。最常见的用法就是利用 su 命令获取 root 权限。这样,一个系统管理员一般需要记住两个密码:自己的用户密码和 root 密码。

严格的权限管理对于工业级的服务器是必须的,但是不适合桌面版新手。Windows 就没有什么切换用户、输入密码之类的事情。UAC 虽然把管理员用户这一概念暴露给了我们,但我们并不需要再输入一个管理员密码来获取这种权限,只需单击“确定”即可。

为了普及 Linux 桌面,以 Ubuntu 为代表的一些发行版引入了 sudo 命令。它授予一些用户 sudo 权限。拥有 sudo 权限的用户被称为 sudoer。当 sudoer 想要获取 root 权限时,只需要运行 sudo 命令,然后再输入自己的密码即可。这样,桌面用户不需要知道 root 密码,只需要记住自己的密码就可以授予权限,这和 Windows 的 UAC 已经很像了。

而且,Ubuntu 还将 root 用户封锁起来,禁止我们以 root 身份登录系统。当我们在 Ubuntu 中运行 su 时,系统会禁止访问,因为用户不能切换到 root 账户上,只能用 sudo 命令暂时获取 root 权限。我们是不能以 root 的身份进入系统的。

RHEL 与此相反,它根本就没有预装 sudo 命令。我们要获取权限,就一定要 su 为 root。

当然,Linux 是可定制的。在 Ubuntu 下可以解锁 root、删除 sudo;在 RHEL 下也可以安装 sudo、锁定 root。但是两款发行版的预装设置展现了两种不同的哲学。桌面版更适合新手使用,一个密码便于记忆,封锁 root 有利于减少误操作;企业版更适合系统管理员使用,文档日志清晰,安全性有保障,减少能够获取 root 权限的用户数,方便管理员长期以 root 身份操作机器。

关于 su 和 sudo 的安全性对比,可以参考这篇文章:http://pan.baidu.com/s/1xszam。

文章目录