一、背景
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