一、背景
linux中root账户权限过大,几乎可以做任何事情,因此我们不应该使用root账户进行日常工作。linux系统安全的思想就是提供最小的权限供用户完成操作。
使用普通账户时,有时又会遇到权限问题,此时需要提权操作,即以root权限执行命令。sudo不需要root密码,
就能以root权限执行。
二、sudo配置
在centos中,默认配置下普通账户无法使用sudo命令的,会提示:[test@zzh ftmgr]$ sudo ls /root [sudo] password for test: test is not in the sudoers file. This incident will be reported.此时我们需要将test这个账户添加到sudoer列表中
1、可以使用visudo命令(visudo实际是使用vi打开/etc/sudoer文件,与vim的编辑相同,并且额外提供了配置语法的检查)
或者用编辑器直接编辑,比如vim,此时在编辑前需要修改sudoer的权限,添加写权限:
[root@zzh etc]# ls -l sudoers -r--r-----. 1 root root 4002 Mar 2 2012 sudoers [root@zzh etc]# chmod u+w sudoers
2、在sudoer文件中添加下列:
test ALL=(ALL)NOPASSWD:NOPASSWD:ALL
test表示需要添加的帐户名
第一个ALL表示所有主机
第二个ALL表示所有账户
第三个ALL表示所有命令
NOPASSWD:NOPASSWD表示不需要输入密码,当需要输入密码时,用tab键替换即可
此时test账户已经可以使用sudo命令了。
[test@zzh etc]$ sudo touch /home/a [sudo] password for test: [test@zzh etc]$ ls -l /home/a -rw-r--r-- 1 root root 0 May 31 20:15 /home/a [test@zzh etc]$ rm -r /home/a rm: cannot remove `/home/a': Permission denied [test@zzh etc]$ sudo rm -r /home/a
三、sudolog配置
由于sudo的权限也很大,我们希望记录下sudo执行过的命令,以供管理员分析用配置如下:
1、创建log文件
[root@zzh log]# touch /var/log/sudo.log
2、修改配置文件
centos使用的配置文件是rsyslog,其他系统可能使用的是/etc/syslog.conf
[root@zzh log]# vi /etc/rsyslog.conf
添加以下语句:
local2.debug /var/log/sudo.log
3、重启syslog
[root@zzh log]# /etc/init.d/rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ]
4、验证
[test@zzh log]$ sudo ls /root anaconda-ks.cfg install.log install.log.syslog [test@zzh log]$ cat /var/log/sudo.log Jun 1 09:10:09 : test : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/bin/ls /root