使用Sudo让Solaris更加安全
Sudo是一款开源安全工具,它能允许管理员给予某些用户或组以作为root用户或其他用户从而运行特定命令的权利。本文将介绍如何通过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

图2 配置sudo
⒊ 这一行的作用是允许用户bob作为root用户来执行命令ifconfig、kill和ls,killall。
⒋ 按下ESC写入并退出文件,然后键入以下命令:
:wq
这个命令利用vi写并退出该文件。说明您必须事先建立一个goodcjh1的用户。

