sudo在linux中非常重要,它能够使普通的用户临时拥有root权限。但是如果让用户滥用sudo命令的话可能会造成严重的影响。
例如:修改root的密码,切换到root用户等等。
所以我们虽然需要赋予普通用户执行sudo的权限,但是也需要限制其禁用sudo执行某些命令
在linux中修改sudo很简单。文件位于/etc/sudoers
但是建议使用visudo命令,该命令会检查是否有语法错误,防止误操作。
配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。 visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理
此时我们有三种选择:键入“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
一般来说普通用户已经登录了,使用sudo命令时还需要在输一次密码,感觉很麻烦。这样改成这样
foobar ALL=NOPASSWD: ALL
如果要禁用sudo执行某些命令
foobar ALL=NOPASSWD: ALL,!/usr/bin/passwd root,!/usr/bin/su,!/usr/sbin/visudo
以上命令禁止使用sudo修改root密码,禁止切换到root用户,禁止使用visudo
但是说实话,使用!不是很靠谱,因为,用!操作符来从ALL中“剔出”一些命令一般是没什么效果的,一个用户完全可以把那个命令拷贝到别的地方,换一个名字后再来运行。
参考自http://man.linuxde.net/sudo