Sudo 是一个容许系统管理员受权让普通用户执行部分或所有root命令的工具。这样能够减小root登录提升系统安全性。
Sudo特色:
1.能够限制特定的用户在特定的主机上运行指定的命令
2.有很是详细的日志纪录
3.sudo使用时间戳文件来执行相似"检票"系统。当用户使用sudo而且输入密码后,用户默认得到了一张存活期为5分钟的票(这个数值能够在编译的时候更改),超过5分钟不用的话就须要从新输入密码才能使用
sudo安装过程(略):通常系统都默认有安装
配置文件/etc/sudoers:
如下简略介绍该文件的配置项(root使用visudo编辑该文件)
第一部分:# Host alias specification(主机别名定义,用于定义多台住机)
格式:Host_Alias SERVER = 192.168.0.1/255.255.255.0
Host_Alias SERVER1 = 172.17.1.1
第二部分:# User alias specification(用户别名定义,用于定义多组用户)
格式:User_Alias ADMIN = test,jack,tom
User_Alias TEST = user1
第三部分:# Cmnd alias specification (命令别名定义,定义用户执行命令列表)
格式:Cmnd_Alias CAT = /bin/cat /etc/sudoers
Cmnd_Alias Ls = /bin/ls /root
第四部分:# Override built in defaults(增长日志纪录功能)
Defaults@SERVER log_host, logfile=/var/log/sudo.log
#为host alise里的主机增长一个附加日志,若是这个日志须要保存多年,则可以使用log_year,这样在日
志纪录的时候将纪录详细的年份
下面详细解释配置实例:
[test@redflag test]$ sudo cat /etc/sudoers
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
# Host alias specification
Host_Alias SERVER = 172.17.196.10 #配置主机172.17.196.10别名SERVER;Host_Alias前不能有空格
# User alias specification
User_Alias ADMIN = test,jack #配置用户组ADMIN,所属用户test,jack
# Cmnd alias specification
Cmnd_Alias CT = /bin/cat /etc/sudoers,/bin/cat /etc/shadow
Cmnd_Alias CA = /bin/ls /root
#配置命令别名CT,能够执行cat etc/sudoers,cat /etc/shadow 命令,CA可执行 la /root命令
# Defaults specification
# User privilege specification
root ALL=(ALL) ALL
test SERVER=CT,CA #配置test用户能够在SERVER执行cat /etc/sudoers,/cat /etc/shadow,ls
/root 命令
# test ALL=(ALL) NOPASSWD: ALL(配置test能够执行全部的root命令,且使用sudo时不须要输入密码)
# Override built in defaults
Defaults@SERVER log_host, logfile=/var/log/sudo.log
#配置日志纪录到主机SERVER的/var/log/sudo.log文件
# Uncomment to allow people in group wheel to run all commands
# %wheel ALL=(ALL) ALL
# Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
# Samples
# %users ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users localhost=/sbin/shutdown -h now
日志文件:
截取/var/log/sudo.log的一段纪录以下:
Mar 3 15:13:14 : test : HOST=redflag : command not allowed ; TTY=pts/0 ;
PWD=/home/test ; USER=root ; COMMAND=/bin/ls /root
Mar 3 15:13:18 : test : HOST=redflag : command not allowed ; TTY=pts/0 ;
PWD=/home/test ; USER=root ; COMMAND=/bin/su -
Mar 3 15:13:56 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ;
COMMAND=/bin/cat /etc/sudoers
Mar 3 15:14:10 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ;
COMMAND=/bin/ls /root
Mar 3 16:27:30 : test : HOST=redflag : TTY=pts/0 ; PWD=/home/test ; USER=root ;
COMMAND=/bin/cat /etc/sudoers
Mar 3 16:29:47 : test : HOST=redflag : command not allowed ; TTY=pts/0 ;
PWD=/home/test ; USER=root ; COMMAND=/bin/cat /var/log/sudo.log
配置中碰到的问题:
一、主机名配置错误致使sudo不能执行和日志纪录。
错误提示:Sorry, user test is not allowed to execute '/bin/cat /etc/sudoers' as root on
localhost.localdomain.
解决:将其中的localhost改成真实主机名字或IP便可
test localhost=/sbin/cat /etc/sudoers
Defaults@localhost log_host /var/log/sudo.log
二、命令别名列表中命令错误致使sudo不能执行
错误提示:[jackyu@localhost jackyu]$ sudo cat /etc/sudoers
Sorry, user jackyu is not allowed to execute '/bin/cat /etc/sudoers' as root on
localhost.localdomain.
解决:因为在Cmnd alias里定义的时候命令书写有误(Cmnd_Alias CAT = /bin/cat -n /etc/sudoers).
执行:sudo cat -n /etc/sudoers
[注]:无论在Cmnd alias里仍是在# User privilege specification中指定命令,使用sudo运行时必须一
摸同样,不然将出错。好比在Cmnd alias里指定某用户职能运行 /bin/cat /etc/sudoers,若是该用户登
陆后运行 sudo /cat -n /etc/sudoers将会出错.安全