网络安全 频道

使用Sudo让Solaris更加安全

三、配置Sudo

  要配置sudo ,我们必须对/usr/local/sudoers 文件进行编辑,该文件中定义了哪些用户可以执行哪些命令。此外,只有root用户才有编辑该文件的权限,并且还必须用visudo 命令对其编辑。在编辑sudoers 文件时,visudo命令会执行以下任务:

  (一) 检查语法错

  即使在修改中找到一个语法错误,visudo也不会保存所做的修改。当发现语法错误时,它会指出错误所在的行号,并给出相应的指导性的提示。这时,我们会看到一个“What Now ?”提示和三个选项:“e”表示重新编辑文件;“x”表示退出并且不作任何保存;“Q”表示退出并保存更改的内容。如果sudoers 文件存在语法错误,而我们又选择Q退出并保存visudo的修改的话,那么我们是无法正常运行sudo的,直到语法问题得到纠正为止。遇到这种情况,我们必须再一次运行visudo,修正错误,然后再次保存文件。当修正问题时,最好选择e项;如果您对于正误还心存顾虑时,可以选择x项,这样在退出时便不会变成修改了。

  (二) sudoers 配置文件中别名规则

  使用者说明节区格式:

  使用者 接收群组 [: 接收群组 ] ...

  接收群组 ::= 主机象征 = [op]指令象征 [,[op]指令象征] ...

  主机象征 ::= 一个小写的主机名称或主机别名。

  指令象征 ::= 一个指令或指令别名。

  op ::= 逻辑的 '!' 否定操作数。

  主机别名节区格式:

  Host_Alias 主机别名 = 主机列表

  Host_Alias ::= 这是一个关键词。

  主机别名 ::= 一个大写的别名。

  主机列表 ::= 以逗号间隔的一些主机名称。

  指令别名节区格式:

  Cmnd_Alias 指令别名 = 指令列表

  Cmnd_Alias ::= 这是一个关键词。

  指令别名 ::= 一个大写的别名。

  指令列表 ::= 以逗号间隔的一些指令。

  所有在 '#' 符号后面的文字都会被当作是批注。 太长的行可以使用倒斜线 '\' 字符来分成新的行。 保留的别名 'ALL' 在 {Host,Cmnd}_Alias' 里都可以使用。不要用 'ALL' 来定义一个别名,这个别名无效。 注意到 'ALL' 暗示全部的主机跟指令。 你可以使用这个语法从整个范围中减掉一些项目:

  user host=ALL,!ALIAS1,!/etc/halt...

  下面是一个范例

      # Host alias specification
  Host_Alias HUB=houdini.rootgroup.com:\
  REMOTE=merlin,kodiakthorn,spirit
  Host_Alias MACHINES=kalkan,alpo,milkbones
  Host_Alias SERVERS=houdini,merlin,kodiakthorn,spirit
  # Command alias specification
  Cmnd_Alias LPCS=/usr/etc/lpc,/usr/ucb/lprm
  Cmnd_Alias SHELLS=/bin/sh,/bin/csh,/bin/tcsh
  Cmnd_Alias MISC=/bin/rm,/bin/cat:\
  SHUTDOWN=/etc/halt,/etc/shutdown
  # User specification
  britt REMOTE=SHUTDOWN:ALL=LPCS
  robh ALL=ALL,!SHELLS
  nieusma SERVERS=SHUTDOWN,/etc/reboot:\
  HUB=ALL,!SHELLS
  jill houdini.rootgroup.com=/etc/shutdown,MISC
  markm HUB=ALL,!MISC,!/etc/shutdown,!/etc/halt
  billp ALL=/usr/local/bin/top:MACHINES=SHELLS
  davehieb merlin=ALL:SERVERS=/etc/halt:\
  kodiakthorn=ALL

  上面的 sudoers 说明文件是由 4 个主机别名说明,4 个指令别名说明以及 7个使用者说明所组成的。Britt 被允许在远程机器 (merlin, kodiakthorn,

  还有 spirit) 上执行 /etc/halt, /etc/shutdown, /usr/etc/lpc 以及 /usr/ucb/lprm 命令。Rohn 被允许在任何机器上执行除了 SHELL 指令群以外的任 何指令。Jill 被允许在 houdini 上执行 /etc/shotdown命令, /bin/rm命令, 以及 /bin/cat命令。Davehieb 可以在 merlin 以及 kodiakthorn 上执行任何指令并且 可以关闭服务器 。

  (三)配置实例

  Sudoers文件中包含一个root条目,默认的权限规定如下所示:

  root ALL = (ALL ) ALL

  该配置允许root用户可以执行所有命令。

  要想让其他用户作为root 来运行命令,我们必须将这些用户加入到sudoers 文件中。我们还必须规定允许在哪些主机上运行这些命令。最后,我们还必须列出这些用户可以作为root 来运行的具体命令。在下面的步骤中,我们将创建用户goodcjh1 ,并允许他作为root 用户在我们的机器上执行某些命令。

  ⒈ 打开该sudoers文件,命令如下所示:

  visudo

  ⒉ Sudoers 文件将在vi 中打开,在其中找到“User privilege specification”部分。然后在root 条目之后,按i键插入下面一项:

  goodcjh1 cjh = /sbin/ifconfig, /bin/kill,usr/bin/killall

配置sudo

  图2 配置sudo

  ⒊ 这一行的作用是允许用户bob作为root用户来执行命令ifconfig、kill和ls,killall。

  ⒋ 按下ESC写入并退出文件,然后键入以下命令:

  :wq

  这个命令利用vi写并退出该文件。说明您必须事先建立一个goodcjh1的用户。

0
相关文章