今天,你Sudo 了吗?
纲要:
1:Sudo的作用及介绍
2:sudo的使用方法
3:sudo的例子
4: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
的使用方法
首先我们分析一些字段
这句话的意思是说:
用户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
的例子
下面通过几个小例子来完成一些说明:
a
:让用户运行命令的时候不输入密码
lifeng ALL= NOPASSWD
:
/usr/sbin/useradd
b
:指定多个用户,
或者组
lifeng,
wangming
ALL=/usr/sbin/useradd
c
:指定多个主机
lifeng
mail,apache
=/usr/sbin/useradd
d
:指定多个被代替的用户
lifeng ALL=
(root,database)
/usr/sbin/useradd
e
:指定多个命令
lifeng ALL= /usr/sbin/useradd
,
/usr/sbin/usemod
指定某个目录下的所有命令
lifeng ALL= /usr/sbin/
*
f
:指定排除的命令
lifeng ALL= (root) /usr/sbin/*
!
/usr/sbin/usermod,
!
/sbin/useradd
不允许的命令前面都要加上叹号
定义别名是
sudo
当中比较常用的一种,
说明:在配置文件sudoers
中有四种别名记录。
1)
配置Host_Alias
:就是主机的列表
Host_Alias
HOST_FLAG = hostname1, hostname2, hostname3
2)
配置Cmnd_Alias
:就是允许执行的命令的列表
Cmnd_Alias
COMMAND_FLAG = command1, command2, command3
3)
配置User_Alias
:就是具有sudo
权限的用户的列表
User_Alias USER_FLAG = user1, user2, user3
4)
配置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
这两个命令以外的所有命令。
注意:命令一定要使用绝对路径,以避免其他目录的同名命令被执行,从而造成安全隐患
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
sudo
能够记录各用户都运行了哪些命令。但是,这些需要对sudo 和syslogd 进行适当的配置。为此,我们首先要在/var/log目录中创建一个日志文件,还必须对syslog.conf进行相应的配置,让它记录sudo 命令。配置sudo 日志功能的具体步骤如下所示:
三个操作
A
:在/etc/syslog.conf
这个文件最后添加一行
local2.debug /var/log/
sudo.log
B
:在sudoers
这个文件最后添加一行
Defaults logfile=/var/log/
sudo.log
C
:重新启动内核日志记录器:
[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
转载于:https://blog.51cto.com/lifeng/976879