Wednesday, August 23, 2006

Ubuntu 的 sudo 揭密

今天第一次安装了 Ubuntu (6.0 Desktop) ,发现与其它 Linux 有非常大的差别。最让人发慌的莫过于 sudo ── 我还没给它发任何指令它就能够做所有 root 级的操作!它让我感觉到一丝的不安~

于是我做了个实验,再用 useradd 加了个用户,结果证明了我的孤陋寡闻 ── 新加的这个用户甚至连与它同名的组名、/home 下的同名目录都没有!而它不能用 sudo 来做 root 的事!

Ubuntu 比我预先想的还要安全。它将 root 用户的密码置为空,这就意味着本地用户和远程用户无法登录到 root 用户下为所欲为。而所有超级指令则完全由第一个用户 ── 也就是安装时设置的用户 ── 来做。这就在一定程度上避免了悲剧的发生(总有人会在 root 用户下使用 "rm -rf /" 命令),因为我们习惯上是不加 sudo 在命令前的。经过进一步和研究发现,这种机制的实现是很简单的,实际上就是将一个普通用户的用户名加在 /etc/group 的某个组名之后(在 Ubuntu 中就是 admin:x:70:myname,其中 70 是组号,myname 是用户名),再将这个组名加入到 /etc/sudoers 中,形如:

%admin ALL=(ALL) ALL

这样就可以在其它 Linux 下也实现同样的功能了。

No comments: