前言 

       sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。

§ Sudo能够限制用户只在某台主机上运行某些命令。

§ Sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。

§ Sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。

 

§ Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。

 

 

系统环境  Red Hat Enterprise Linux Server release 6.0 (Santiago)

sudo是否安装    rpm -qa sudo

sudo命令的配置文件 /etc/sudoers 

sudo命令的编辑     visudo

 

 

  1.  ## Syntax:
  2.  ##
  3.  ##      user    MACHINE=COMMANDS
  4.  ##
  5.  ## The COMMANDS section may have other options added to it.
  6.  ##
  7.  ## Allow root to run any commands anywhere
  8.  root    ALL=(ALL)       ALL
  9. redhat   ALL=(root)    /usr/sbin/useradd,/usr/bin/passwd

 

上文第八行是系统给出的模板,第九行就是我添加的一个测试命令行

第一个redhat为我要使用sudo命令的用户,ALL为使用sudo的主机,在本地,可以使用ALL,但是在企业环境中,存在多台主机sudo配置的时候,需要指定主机。 括号中的root为sudo之后使用root的权限。   后面跟的为具体的命令,命令需要用绝对路径,多个命令用逗号隔开。

上文第九行整句话的意思为 允许redhat在所有主机上用root的权限执行useradd和passwd命令。

 

 小技巧

我们已经从某个账户登录,但是每次都输入密码,太麻烦了,修改一个配置文件,sudo之后就不需要密码了。

 

redhat localhost=NOPASSWD:/usr/sbin/useradd

这样 每次本地登录之后使用sudo useradd就不需要输入redhat的密码了

如果所有的命令都不需要输入密码,那就增加这样一行

 

redhat localhost=NOPASSWD:ALL