今天,你Sudo

纲要:     1:Sudo的作用及介绍     2:sudo的使用方法     3:sudo的例子     4:sudo的日志管理

 

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

1 :Sudo的作用

sudo 是linux下常用的允许普通用户使用超级用户或者其它用户权限的工具。

sudo 对于控制和审计root用户的访问权限是极其有益的。它使得系统管理员可以将root用户的系统管理任务分配给其他人,而无需给予他们root口令。管理员也可以根据每个用户实际所需的root访问权限来定制系统访问权限,从而达到权限最小化的目标

首先我们查看一下这个软件有没有安装,

[root@hgj ~]# rpm -q sudo
 
  
sudo-1.6.9p17-3.el5

它的主要配置文件是sudoers,linux 下通常在/etc 目录下

[root@hgj ~]# ls /etc/sudoers
 
  
/etc/sudoers

这是一个普通文件,但也是比较特殊的,他的权限是441

[root@hgj ~]# ls /etc/sudoers -l
 
  
-r--r----- 1 root root 3185 2009-01-07 /etc/sudoers

我们编辑这个文件的时候不用vi 直接编辑而是用visudo 况且还不能用多个终端同时编辑这个文件,否则会提示:

[root@hgj ~]# visudo
 
  
visudo: /etc/sudoers busy, try again later

也只有管理员才有权限编辑这个文件,

在这个文件当中,大部分都是一些例子,大部分都是一些别名记录的例子,

别名记录在配置文件当中有四种:

Host_Alias

Cmnd_Alias

User_Alias

Runas_Alias

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

2 : sudo 的使用方法

首先我们分析一些字段

sudo什么情况使用 sudo作用和使用方法_bc

这句话的意思是说:

用户lifeng 在mail 这台服务器上可以以用户root 的身份运行/usr/sbin/useradd 这个命令

添加这一行     lifeng ALL=/usr/sbin/useradd

我们可以测试一下

[root@hgj ~]# su - lifeng      ------------------------------ 切换到 lifeng 这个用户,注意加—

[lifeng@hgj ~]$ useradd abc          -------------------------- 添加 abc 这个用户

-bash: useradd: command not found      ------------------ 提示命令没有发现,是环境的原因

[lifeng@hgj ~]$ /usr/sbin/useradd abc  -------------------- 这里我们加上绝对路径

-bash: /usr/sbin/useradd: 权限不够       -------------------- 提示权限不够

[lifeng@hgj ~]$ sudo /usr/sbin/useradd abc  -------------- 用 sudo 的方式运行

We trust you have received the usual lecture from the local System

Administrator. It usually boils down to these three things:

 

    #1) Respect the privacy of others.

    #2) Think before you type.

    #3) With great power comes great responsibility.

 

口令:            ----------------------------------------- 提示输入密码,是用户 lifeng 的密码

[lifeng@hgj ~]$

[lifeng@hgj ~]$ tail -1 /etc/passwd        ------------------- 查看用户是不是已经建立好了

abc:x:504:504::/home/abc:/bin/bash        ------------------- 显示用户已经建立成功

[lifeng@hgj ~]$

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

3 : sudo 的例子

下面通过几个小例子来完成一些说明:

:让用户运行命令的时候不输入密码

lifeng ALL= NOPASSWD : /usr/sbin/useradd

:指定多个用户, 或者组

lifeng, wangming  ALL=/usr/sbin/useradd

:指定多个主机

lifeng  mail,apache =/usr/sbin/useradd

:指定多个被代替的用户

lifeng ALL= (root,database)  /usr/sbin/useradd

:指定多个命令

lifeng ALL= /usr/sbin/useradd , /usr/sbin/usemod

指定某个目录下的所有命令

lifeng ALL= /usr/sbin/ *

:指定排除的命令

lifeng ALL= (root)  /usr/sbin/* ! /usr/sbin/usermod, ! /sbin/useradd

       不允许的命令前面都要加上叹号

定义别名是 sudo 当中比较常用的一种,

说明:在配置文件sudoers 中有四种别名记录。

配置Host_Alias :就是主机的列表

Host_Alias

配置Cmnd_Alias :就是允许执行的命令的列表

Cmnd_Alias     COMMAND_FLAG = command1, command2, command3

配置User_Alias :就是具有sudo 权限的用户的列表

User_Alias USER_FLAG = user1, user2, user3

配置Runas_Alias :就是用户以什么身份执行(例如root ,或者oracle 等)的列表

Runas_Alias RUNAS_FLAG = operator1, operator2, operator3

注意:在定义别名的时候我们一般用大写比较好,

下面给出一个综合性的例子: 定义别名:

Host_Alias SERVER=mail,apache,ftp

Cmnd_Alias COMMAND=/usr/sbin/*,/sbin/*,!/usr/sbin/passwd,!/usr/sbin/userdel

User_Alias USER=lifeng,zhang3,li4

Runas_Alias RUNAS=root,database

 

USER SERVER=(RUNAS) COMMAND

这句话的意思就是说用户lifeng ,zhang3 和li4 可以在mail ,apache ,ftp 这三台服务器上以root 和database 这两个用户的身份运行/usr/sbin/ 下的和/sbin/ 下的除了passwd 和userdel 这两个命令以外的所有命令。

注意:命令一定要使用绝对路径,以避免其他目录的同名命令被执行,从而造成安全隐患

 

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

 

4 : sudo 的日志管理

sudo 能够记录各用户都运行了哪些命令。但是,这些需要对sudo 和syslogd 进行适当的配置。为此,我们首先要在/var/log目录中创建一个日志文件,还必须对syslog.conf进行相应的配置,让它记录sudo 命令。配置sudo 日志功能的具体步骤如下所示:

三个操作

:在/etc/syslog.conf 这个文件最后添加一行

local2.debug /var/log/ sudo.log  

:在sudoers 这个文件最后添加一行

Defaults        logfile=/var/log/ sudo.log

:重新启动内核日志记录器:

[root@hgj ~]# /etc/init.d/syslog restart

重新启动服务之后系统就会在/var/log 目录中建立一个以 sudo.log 的文件名

测试我们再用过sudo之后我们查看日志就能看到某用户在做了哪些操作了

[root@hgj ~]# cat /var/log/sudo.log

 7 月 5 01:35:43 : lifeng : TTY=pts/0 ; PWD=/home/lifeng ; USER=root ;

    COMMAND=/usr/sbin/useradd xiaomao

 7 月 5 01:36:50 : lifeng : command not allowed ; TTY=pts/0 ; PWD=/home/lifeng

    ; USER=root ; COMMAND=/usr/sbin/userdel zhang3

 

有两条记录:

第一条是说lifeng 这个用户以root 的身份创建了一个用户xiaomao

第二条是说lifeng 这个用户不允许用删除用户命令删除zhang3