深入理解sudo

Posted by Elton's Blog on July 27, 2009

以前没有太在意这方面的知识,现整理如下:

用root用户登录或用su - 切换到root用户,使用visudo命令,方法跟vi一样

赋予用户在所有主机上的所有权限

在最后一行加入

your_user_name ALL=(ALL) ALL   

第一个ALL表示主机,后两个ALL表示权限 保存即可。

指定主机别名

为了方便设置一批主机,可以在文件中定义别名,如

Host_Alias     FILESERVERS = fs1, fs2     

指定用户别名

用户同样可以设置别名,方便定义一组用户,如:

User_Alias ADMINS = jsmith, mikem  

指定命令别名

为了方便给不同用户设置不同的权限,可以将相关命令打包成一个组,如:

Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool 

授权用户指定主机指定权限

有了上面的知识积累,就可以给指定的用户授予指定的管理员权限,如:

your_user_name server1 = NETWORKING  

授权某个用户组相应权限

如果想将一组用户都可以使用sudo,则使用%加在组名前面

%your_group_name ALL=(ALL) ALL   

授权用户使用管理权限的时候不输入密码

如果想不必输入密码,则需要更改visudo中的相关行如下

your_user_name ALL=(ALL) NOPASSWD: ALL   

设置过以上相关内容后,就可以使用sudo临时使用需要管理权限的命令,方法是

sudo commands  

如果没有指定NOPASSWORD的话,是需要输入相关用户密码的。 可以使用sudo -l命令列出此用户的相关特殊权限