sudo在AIX上的安装和配置

Sudo是一款很有用的工具,通过sudo可以允许系统管理员授权给普通用户来完成部分或全部root命令。比如:执行关机命令shutdown,这个命令是管理员命令,普通用户不能访问执行该命令。但是通过sudo授权后,普通用户就可以访问shutdown这个命令了。
一、 sudo的安装。
AIX安装完成后默认是没有安装sudo工具的,需要我们额外安装。基本安装过程有两种方式,源代码编译安装和rpm安装包安装。
1、 源代码安装:安装之前先确定系统内已经安装gcc4以上版本,然后从IBM网站下载sudo源代码tar包,并解压。然后执行下面过程!!
# export LIBPATH=/usr/lib
# ./configure --with-aixauth
# make
# make install
2、 rpm包安装:采用rpm安装方式比较简单!不需要系统安装gcc等编译环境,所以建议大家采用rpm方式安装。安装方法:首先从网上下载sudo的rpm安装包,然后执行安装。
下载rpm:http://www.bullfreeware.com/affichage.php?id=1031
或者使用smit工具安装也可以
# smit installp -->Install Software  输入sudo工具rpm包所在路径,然后执行安装即可。
二、 sudo安装后主要文件:
1、sudo安装完成后主要文件:
sudo 文件:该文件安装完成后存在于/opt/freeware/bin文件夹中,并链接到/usr/bin/sudo文件。
visudo文件:该文件安装完成后存在于/opt/freeware/sbin 文件夹中,并链接到/usr/sbin/visudo文件。
Sudoers 文件:该文件完成安装后存在于 /etc/ 文件夹中。
2、上述三个文件关系:
Sudo 文件是用来执行普通用户使用管理员用户命令授权,即允许普通用户执行用户本身不能执行的命令。比如:让普通用户(bao)执行关机命令,可以这样来实现。
$ sudo –u root /usr/sbin/shutdown –h now
Sudoers 文件:该文件是sudo的配置文件,当管理员要开放给某个普通用户一些特殊命令执行权限时,就是在这个文件中进行编辑设置的。比如:上面的普通用户(bao)之所以可以执行关机命令,就是由管理员先行编辑该文件,并在文件中指定用户(bao)能够执行关机命令。然后当用户(bao)执行sudo命令关机时,sudo就会读取该文件中的内容,来判断用户(bao)能否执行sudo后面的shutdown命令。下面的内容就是sudoers文件中的一行。
bao ALL=/usr/bin/shutdown –h now
visudo 文件:visudo就是用来编辑sudoers文件内容的。之所以使用visudoo来编辑sudoers文件,是因为它即能防止两个用户同时编辑sudoers,还可以进行一些语法检查,因此建议编辑sudoers文件时使用该命令来编辑。
三、sudo 配置文件/etc/sudoers配置:
1 /etc/sudoers 文件中每行算一个规则,前面带有 # 号可以当作是说明的内容,并不执行;如果规则很长,一行列不下时,可以用 \ 号来续行,这样看来一个规则也可以拥有多个行。规则的设置格式为
授权用户 主机 = 命令动作
例如:
bao ALL=(root)/usr/bin/shutdown –Fr now --- 允许用户 bao root 用户身份执行重启系统命令。
2 别名规则
上面的设置只是简单的设置,如果访问主机的用户不多,而且执行功能简单的话,可以采用上面的设置方式,但是涉及到用户规则多而且设置复杂时,为了避免出错,可以采用别名设置。
/etc/sudoers 的规则可分为两类;一类是别名定义,另一类是授权规则;别名定义并不是必须的,但授权规则是必须的。
别名类型( Alias_Type ):别名类型包括如下四种

Host_Alias
定义主机别名,就是主机的列表,可以是主机名,也可以是ip地址
如:Host_Alias TEST=host1,192.168.1.100
User_Alias
用户别名,别名成员可以是用户,用户组(前面要加 % 号)
如: User_Alias USRGP=usr1,usr2,usr3
Runas_Alias
就是用户以什么身份执行(例如root,或者db2inst1)的列表, sudo 允许切换至的用户;
如: Runas_Alias RUN=root,db2inst1
Cmnd_Alias
定义命令别名;就是允许执行的命令的列表.
如: Cmnd_Alias CMD=/usr/bin/shutdown –Fr now,/usr/bin/svmon –G,
/home/db2inst1/sqllib/bin
参考上面的别名定义,可以用别名来完成规则设定。
如:
USRGP TEST=(RUN)CMD
注意:在定义别名时,语句一定要顶格写,而且别名一定要大写。
3、 关于环境变量的继承:由于sudo 会缩减系统变量,因此在执行一些命令时,会出现一些错误,下面通过实例来理解一下,如果继承环境变量。
当用户bao通过sudo要执行oracle的sqlplus命令时,例如:
Sudo –u oracle /oracle/ora10g/bin/sqlplus
会出现如下错误:
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory,这是由于没有继承ORACLE_HOME环境变量的缘故。这就需要编辑sudo的配置文件,添加如下内容:Defaults env_keep += "ORACLE_HOME"。完成后,切换到执行用户,然后执行sudo –l 命令,会看到这样信息:
Matching Defaults entries for bao on this host:
env_keep+=ORACLE_HOME
然后再执行Sudo –u oracle /oracle/ora10g/bin/sqlplus,结果依然报上面的错误。
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory。
这是由于只是指定了ORACLE_HOME变量的名称,并没有指定变量的值,因此在运行Sudo –u oracle /oracle/ora10g/bin/sqlplus还要执行该变量的值。这样运行起来就不会报错了。过程如下:
# export ORACLE_HOME=/oracle/ora10g
# sudo -u oracle /oracle/ora10g/bin/sqlplus
四、 sudo命令的主要参数:
-V 显示版本编号
-h 显示 sudo 命令的使用参数。
   -v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行( N 预设为 5 )会询问密码。这个参数是重新做一次确认,如果超过 N 分钟,也会问密码。
   -k 将会强迫使用者在下一次执行 sudo 时询问密码(不论有没有超过 N 分钟)。
   -u username/#uid 不加此参数,代表要以 root 的身份执行命令,而加了此参数,可以以 username 的身份执行命令( #uid 为该 username UID )。
   -s 执行环境变量中的 SHELL 所指定的 Shell ,或是 /etc/passwd 里所指定的 Shell
   -H 将环境变量中的 HOME (宿主目录)指定为要变更身份的使用者的宿主目录。(如不加 -u 参数就是系统管理者 root 。)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值