您的位置:首页 > 其它

无密码使用sudo命令

2011-09-06 12:30 323 查看
每次执行sudo命令,linux会读取/etc/sudoers文件的配置。该文件可以说明哪些用户可以用sudo命令,并且可以设置用户组或普通用户在无需输入密码的情况下执行sudo命令。

我们用一个实例来详细解释/etc/sudoers文件的配置语法,请看下面的例子:

jorge ALL=(root) /usr/bin/find, /bin/rm

上面的第一栏规定它的适用对象:用户或组,就本例来说,它是用户jorge。此外,因为系统中的组和用户可以重名,要想指定该规则的适用对象是组而非用户的话,组对象的名称一定要用百分号%开头。

第二栏指定该规则的适用主机。当我们在多个系统之间部署sudo环境时,这一栏格外有用,这里的ALL代表所有主机。但是,对于桌面系统或不想将sudo部署到多个系统的情况,这一栏就换成相应的主机名。

第三栏的值放在括号内,指出第一栏规定的用户能够以何种身份来执行命令。本例中该值设为root,这意味着用户jorge能够以root用户的身份来运行后面列出的命令。该值也可以设成通配符ALL,jorge便能作为系统中的任何用户来执行列出的命令了。

最后一栏(即/usr/bin/find, /bin/rm)是使用逗号分开的命令表,这些命令能被第一栏规定的用户以第三栏指出的身份来运行它们。本例中,该配置允许jorge作为超级用户运行 /usr/bin/find和 /bin/rm这两个命令。需要指出的是,这里列出的命令一定要使用绝对路径。

打开/etc/sudoers文件:

$su -

#visudo

执行了该命令后,会把/etc/sudoers复制成/etc/sudoers.tmp,修改完配置后,另存为/etc/sudoers就可以使配置生效了。

退出/etc/sudoers的时候,使用命令ctrl+x.

写入/etc/sudoers文件的时候,使用命令ctrl+o.

现在我们通过配置/etc/sudoers文件来实现普通用户无密码使用某些需要sudo权限的命令。

以普通用户oneadmin为例子,该用户需要在脚本执行sudo命令。执行带有sudo命令的脚本要求用户的交互来输入密码。但是脚本是在软件运行的过程中自动执行的,需要尽量避免用户交互。所以接下来,我将要通过配置/etc/sudoers文件来使oneadmin在无需输入密码的情况下执行某些sudo命令。

编辑/etc/sudoers文件:

%su -

#visudo

这样就打开了sudoers.tmp文件。

在文件中添加一句:

oneadmin ALL = NOPASSWD: /srv/cloud/vnet/ovs/bin/*, /srv/cloud/vnet/ovs/sbin/*, /sbin/insmod, /sbin/rmmod, /bin/kill

oneadmin是用户名,ALL是缺省值表示主机名,NOPASSWD表示不需要密码,冒号后面写明不需要密码的命令的绝对路径,命令之间用逗号隔开。

这样就可以使oneadmin无密码使用ovs的命令了。其中ovs的命令放在/srv/cloud/vnet/ovs/bin/和/srv/cloud/vnet/ovs/sbin/目录下。

/etc/sudoers.tmp文件修改好后,另存为/etc/sudoers文件,这样就生效了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: