配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止?
两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。?
visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:?
>>>?sudoers?file:?syntax?error,?line?22?<<<WHAT?now??e<?FONT>?
此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。?
现在,我们一起来看一下神秘的配置文件,学一下如何编写它。让我们从一个简单的例子开始:让用户foobar可以通过sudo执行所有root可执行的命令。以root身份用visudo打开配置文件,可以看到类似下面几行:?
#?Runas?alias?specification?
#?User?privilege?specificationroot????ALL=(ALL)ALL?
我们一看就明白个差不多了,root有所有权限,只要仿照现有root的例子就行,我们在下面加一行(最好用tab作为空白):?
foobar??ALL=(ALL)????ALL?
保存退出后,切换到foobar用户,我们用它的身份执行命令:?
[foobar@localhost?~]$?ls?/root?
ls:?/root:?权限不够?
[foobar@localhost?~]$?sudo?ls?/root?
Password:?
anaconda-ks.cfg??Desktop??install.log??install.log.syslog?
好了,我们限制一下foobar的权利,不让他为所欲为。比如我们只想让他像root那样使用ls和ifconfig,把那一行改为:?
foobar??localhost=????/sbin/ifconfig,???/bin/ls?
再来执行命令:?
[foobar@localhost?~]$?sudo?head?-5?/etc/shadow?
<