Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2927657
  • 博文数量: 401
  • 博客积分: 12926
  • 博客等级: 上将
  • 技术积分: 4588
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-22 14:51
文章分类

全部博文(401)

文章存档

2015年(16)

2014年(4)

2013年(12)

2012年(82)

2011年(98)

2010年(112)

2009年(77)

分类: LINUX

2011-09-21 13:53:35

这篇博文的主要内容来说说sudo。为什么会有sudo的出现呢?在linux起初,是没有这个命令,后来才把这个命令添加进去,而且现在基本上每个版本都会默认安装sudo.
原因呢?不是本来就有su命令吗,su也可以切换用户,包括切换到root用户,为什么还要引入sudo?答案就是安全。很简单,用su切换到root,需要输入root密码。同样,切换到其他用户,也需要输入密码。但是,用sudo来执行命令,包括一些root权限的命令,一样要输入密码,但是这个密码是该用户自己本身的密码,而不是其他或者root密码。
linux是一个多用户多任务操作系统,一个系统上如果多个用户都知道root账号密码,系统是非常危险;而且修改root密码后,要通知给多个人,也很麻烦。这个问题用sudo就可以轻松解决了。
如果想用其他账户来执行命令,便使用:

  1. sudo -u [username] [命令] -[命令参数]
其中输入的密码是该用户的密码,不是要转换的用户的密码.
sudo执行过程:
  1. 1.首先sudo会在/etc/sudoers文件中寻找执行该命令的用户是否在文件中;
  2. 2.如果在文件用,需要用户输入密码来进行验证;
  3. 3.如果验证通过,再执行sudo 后面的命令
从过程中知道,/etc/sudoers这个文件在执行命令的过程中起着关键作用。下面来看一下我电脑上的该文件的配置。
可以用命令visudo来修改sudo的配置文件,执行权限必须为root,也可以直接用vim /etc/sudoers编辑,效果是一样的。
下面是/etc/sudoers文件的部分内容:
  1. huang ALL=(ALL) NOPASSWD: ALL 

  2. 用户账号 登录主机 = (可以变换的身份) 可以执行的命令
上面一行的解释就是:用户huang 可以在任何地方,任何主机上的用户名不用输入密码来执行任何命令.
如果账户huang想用用户test来执行命令,那么应该写成:
  1. huang ALL = (test) NOPASSWD:ALL
如果错写成:
  1. huang ALL = ALL
则默认的是仅能进行root身份切换,执行任何命令。
如果是某个用户组的话,需要在用户组前加上一个'%':
  1. %wheel ALL = (ALL) ALL
如果不想输入密码: 
  1. %wheel ALL = (ALL) NOPASSWD:ALL
下面的例子摘自《鸟哥的私房菜--基础篇》
  1. User_Alias ADMPW = vbird, dmtsai, vbird1, vbird3
  2. ADMPW ALL = NOPASSWD: !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*,\
  3.                       !/usr/bin/passwd root
解释:系统上有四个账号:vbird,dmtsai,vbird1,vbird3,四账号加入到sudo内的ADMPW组中, 这四个账户可以使用/usr/bin/passwd * 来修改密码,但是不能使用/usr/bin/passwd 和 /usr/bin/passwd root,因此,这四个用户可以修改用户密码,但是修改root密码.
  1. User_Alias DNSMASTER = vbird, dmstai
  2. Cmnd_Alias DNSCMD = /etc/init.d/named, /usr/bin/vim /var/named/*
  3. DNSMASTER ALL = DNSCMD
留作自己以后的小练习小吧,呵呵~
上面用到别名,有关别名可以参考这篇博文
阅读(1176) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~