一、前言
sudo是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,减少了root用户的登陆和管理时间,提高了安全性。Sudo不是对shell的一个代替,它是面向每个命令的。
而防止root用户密码被恶意更改,主要是用户基本上都是su - 切换到root,假如有很多人知道root账号和密码,那么就会出现很多问题,也就不知道是谁干的坏事,log里面查看的都是root用户,防止root被恶意更改,为了更好的管理用户权限。
二、特点
Sudo能够限制用户只在某台主机上运行某些命令。
Sudo提供了丰富的日志,详细地记录了每个用户干了什么。它能够将日志传到中心主机或者日志服务器。
Sudo确保root密码不会被遗忘,配置一个具有sudo权限的用户,切换到root就可以修改。
Sudo使用时间戳文件来执行类似的“检票”系统。当用户调用sudo并且输入它的密码时,用户获得了一张存活期为5分钟的票(这个值可以在编译的时候改变)。
Sudo的配置文件是sudoers文件,它允许系统管理员集中的管理用户的使用权限和使用的主机。它所存放的位置默认是在/etc/sudoers,属性必须为0411。
三、配置sudo
1、查看系统是否安装Sudo
[kuangl@jw-web02 root]$ rpm -qa |grep sudo
sudo-1.7.2p1-10.el5
2、新建一个系统管理用户kuangl,以root用户操作;
[root@jw-web02 ~]# useradd kuangl
[root@jw-web02 ~]# passwd kuangl
Changing password for user kuangl.
New UNIX password:
BAD PASSWORD: it is based on a (reversed) dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
3、将kuangl用户赋予root权限;
[root@jw-web02 ~]# visudo
在文件内容后面添加
kuangl ALL=(ALL)
如果不想在sudo的时候输入密码,干脆就把上面那行换成下面这行即可:
kuangl ALL=(ALL) NOPASSWD: ALL
4、测试 Sudo
[root@jw-web02 ~]# sudo whoami
root //如果配置正确,命令会返回root字样
5、切换到root
[kuangl@jw-web02 root]$ sudo su - //切换到root
[root@jw-web02 ~]# su kuangl //切换到赋予的用户
四、防止Root密码被恶意篡改
1、添加admin组;
[root@jw-web02 ~]# groupadd admin
2、添加用户;
[root@jw-web02 ~]# useradd linda
[root@jw-web02 ~]# useradd rongw
3、将用户添加到admin组;
[root@jw-web02 ~]# usermod -a -G admin linda
[root@jw-web02 ~]# usermod -a -G admin rongw
4、在sudoers文件添加admin组,让这个组的用户权限和root一样。
vim /etc/sudoers
密码由自己设置和保管,相互之间不知道其他组的密码,这样子每个人员都有了sudo权限,而每个用户所做的事情基本可以通过日志查询得到。
五、备注:
[root@jw-index conf]# useradd kuangl
bash: useradd: command not found
为什么会出现bash: useradd: command not found 这个问题呢?原因如下:
sudo su 只是获得root用户的权限;
sudo su - 不仅获得root用户的权限,而且还执行root的profile来执行root的环境变量。
本文转自 kuangling 51CTO博客,原文链接:http://blog.51cto.com/kling/1167541