- 论坛徽章:
- 0
|
可能在日常的系统管理中,经常会遇到诸如此类的问题:监控人员需要运行一些命令来查看或者对系统做一些修改,但这些命令只有root用户才有权限。但实际上,又不能让该人员知道root的密码。于是很多人经常使用chmod命令来修改这些命令的权限和宿主,甚至通过修改用户的UID来实现。但以上这些办法都是一种“后患无穷”的临时办法。因为你不知道修改权限和宿主以后,将会给系统带来怎样的结果。
基于以上各种问题的困难,于是Sudo这款软件就产生了。
1. Sudo软件的安装
在以下站点可以下载:
http://h20338.www2.hp.com/hpux11i/cache/324414-0-0-0-121.html
在下载的时候,需要确认操作系统类型,用uname -a或者machinfo命令来确认。
下载完以后,来安装Sudo软件。
例如我将该软件放在/tmp目录下,因此我可以用以下命令来安装:
#swinstall -s /tmp/ixSudo_A.08.00-1.6.8p12.001_HP-UX_B.11.23_IA+PA.depot
安装完成以后确认已经能够找到该软件:
#swlist -l bundle | grep -i sudo
ixSudo A.08.00-1.6.8p12.001 Super User Do
2. 配置Sudo软件
Sudo软件的配置很简单,因为它只牵涉到一个配置文件:/etc/sudoers
让我们先来看一下缺省的/etc/sudoers文件:
#cat /etc/sudoers
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# Defaults specification
# Runas alias specification
# User privilege specification
root ALL=(ALL) ALL
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
实在是相当的简单了。
/etc/sudoers的配置分为两类:
a. 别名定义
其中包含了alias的,就是别名定义的部分。其中别名定义并不是必须的,但为了管理方便,还是建议采用别名管理的方式。别名使用的好处,看到后面自然就明白了。
别名的基本语法是:Alias_Type NAME = item1, item2, ...
或者是:Alias_Type NAME = item1, item2, item3 : NAME = item4, item5
建议采用第一种,对于要定义多个别名,就定义成多行的,便于管理
b. 授权
其中授权是Sudo中必须要配置的。Sudo权限管理的精华就在于此。其实简单来说,Sudo的权限管理方式是采用了su的权限管理方式,它让该用户在运行需要特定权限命令的时候su到拥有该特定权限的用户执行该命令,在执行完成以后自动退出该用户的权限,这样就避免了我们su到root用户以后,除了这些命令,我们还能操作其他命令的漏洞。
授权的基本语法是:授权用户 主机=命令动作
3. 详解/etc/sudoers文件
在我们学会编辑/etc/sudoers文件之前,记住一件事情:Sudo软件是要求使用visudo这条命令来编辑/etc/sudoers文件的。然而本人也尝试过使用vi来编辑,而且也是成功的。
3.1 定义别名
Host alias:定义主机别名
User alias:定义用户别名。其中用户别名的定义,即可以是单个的用户,也可以是用户组(此时用户组的前面必须要加“%”号)
Cmnd alias:定义命令别名
Runas alias:这里Runas别名的定义,是指“目标用户”,就是想要切换到哪个用户的别名定义
为了尽量简单,我自己将/etc/sudoers的别名部分定义如下:
Host_Alias MACHINE01=localhost,goodgirl,15.70.146.115
User_Alias SYSADMIN=crystal
Cmnd_Alias DISOP=/usr/sbin/vgdisplay
Runas_Alias OP=root
3.2 授权
对授权的定义如下:
crystal MACHINE01=(OP) NOPASSWD:DISOP
此时,我们可以到crystal的权限,然后用sudo -l命令来查看能够使用sudo运行那些命令:
#su - crystal
$sudo -l
User crystal may run the following commands on this host:
(root) NOPASSWD: /usr/sbin/vgdisplay
于是此时,我们就可以使用如下命令来查看VG00的信息了:
$sudo /usr/sbin/vgdisplay vg00
4. Sudo常用的一些参数
例如以上,我们就在crystal这个用户权限下使用了sudo -l命令来查看该用户能使用sudo命令来操作那些权限的命令。
除此之外,它还有一些常用的参数:
sudo -V
显示版本
sudo -l
显示出自己(执行 sudo 的使用者)的权限
sudo -v
因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码。这里N默认是5。
sudo -k
将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
总结:
总的来说,Sudo这个工具的配置还是很简单的,并且给我们的管理带来很大的便利。在遇到用户一些特殊权限要求的时候,建议先不要修改系统文件、命令的默认权限,采用Sudo来进行管理,会让系统更加安全稳定一些。
这并不是Sudo一个完整的教程,而仅仅是一个简单的例子。更加强大的功能,以后再继续探讨。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12718/showart_281470.html |
|