表示test用户在任何主机中执行rm和kill操作。通过sodo –l 来查看test用户可执行的命令。
[switch@localhost ~]$ sudo -l
User switch may run the following commands on this host:
(root) /bin/ls
(root) /bin/rm
[switch@localhost ~]$ sudo ls /root/
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these two things:
#1) Respect the privacy of others.
#2) Think before you type.
Password:
anaconda-ks.cfg Desktop install.log install.log.syslog
test ALL=(root) NOPASSWD: /bin/rm, /bin/kill
test ALL=(test) /bin/ls
(root) 表示切换到哪些用户或用户组,默认为root用户,(ALL) 代表所有用户。
NOPASSWD: 系统默认的情况下是需要用户密码,加入NOPASSWD参数后就无需用户输入自己密码。
%member ALL=/bin/*,/sbin/*
表示member中所有成员在所有主机上以root身份执行/bin和sbin下所有命令。
Member ALL=/bin/*,!/bin/kill
表示member中所有成员在所有主机上以root身份执行/bin,但kill命令除外。
sudo日志
在sudo中管理员可以启用sudo日志,通过sudo日志文件跟踪用户执行的任何指令。
Defaults logfile=/var/log/sudo.log #指定sudo.log
Defaults loglinelen=0 #表示不记录空命令行
Defaults !syslog #表示不记录到/var/log/messages
[root@localhost bin]# cat /var/log/sudo.log
Mar 3 03:17:30 : root : TTY=pts/0 ; PWD=/bin ; USER=root ; COMMAND=list
Mar 3 03:17:37 : switch : TTY=pts/0 ; PWD=/home/switch ; USER=root ;
COMMAND=/bin/ls -l /root/ggg
Mar 3 03:17:38 : switch : TTY=pts/0 ; PWD=/home/switch ; USER=root ;
COMMAND=/bin/ls -l /root
sudo命令格式如下:
sudo -K -L -V -h -k -l -vsudo [-HPSb] [-a auth_type] [-c
class-] [-p prompt] [-u username#uid] {-e file [...] -i -s command}
下面我们再来看一下sudo其它常用的一些参数:
选项 含义 作用
sudo -h Help 列出使用方法退出。
sudo -V Version 显示版本信息并退出。
sudo -l List 列出当前用户可以执行的命令。只有在sudoers里的用户才能使用该选项。
sudo -u username|#uid User 以指定用户身份执行命令后面的用户是除root以外的,可以是用户名,也可以是#uid。
sudo -k Kill 清除“入场卷”上的时间,下次再使用sudo时要再输入密码。
sudo -K Sure kill 与-k类似,但是它还要撕毁“入场卷”,也就是删除时间戳文件。
Sudo -b command Background 在后台执行指定的命令。
别名实例
User_Alias NORMAL = localuser,pubuser,shuser,backuser
User_Alias MANGE = admin,member,switch
User_Alias POWER = shutuser
User_Alias TEST = adtest,test1,test2,test3
Host_Alias APPSYS = web,ftp,mail
Host_Alias PRODUCT = db1,db2,db3,backup
Host_Alias TESTSYS = 192.168.2.0/255.255.255.0
Cmnd_Alias FILE = /bin/ls,/bin/ln,/bin/cp,/bin/cat,/bin/chmod,/bin/cut,/bin/more,/bin/mv,\
/bin/vi,/bin/rm,/bin/rmdir,/bin/touch
Cmnd_Alias ADSHELL = /bin/*,/sbin/*
Cmnd_Alias SHUT = /sbin/shutdown,/sbin/reboot,/sbin/halt
Runas_Alias DBA = mysql
#NORMAL组只能在PRODUCT网络和APPSYS中执行FILE指令
NORMAL APPSYS = FILE:NORMAL PRODUCT = FILE
#MANGE用户组可在所有网络上执行/bin和/sbin下所有指令
MANGE ALL = ADSHELL
#admin用户可在任何网络环境中执行任何所有命令除TESTSYS网络主机外
admin ALL =(root) NOPASSWD: ALL:!admin=TESTSYS
#admin用户可以修改所有网络除root外用户口令
admin ALL = /usr/bin/passwd[A-z]*,!/usr/bin/passwd root
#MANGE组无需输入口令可在所有网络上执行ADSHELL,和SHUT命令
MANGE ALL = NOPASSWD: ADSHELL,SHUT
#shutuser用户可在所有网络环境中执行ADSHELL命令
shutuser ALL =(ALL) ADSHELL
#NORMAL组可以在APPSYS网络上su除root之外的所有人
NORMAL APPSYS=/bin/su [!-]*,!/bin/*root*
#MANGE组用户可在PRODUCT网络环境上执行 mysql用户指令
MANGE PRODUCT=( DBA) /usr/local/mysql/bin/*