Sudo是Unix/Linux平台上的一个非常有用的工具,它允许系统管理员分配给普通用户一些合理的“权利”,让他们执行一些只有超级用户或其他特许用户才能完成的任务,比如:运行一些像mount,halt,su之类的命令,或者编辑一些系统配置文件,像/etc/mtab, /etc/samba/smb.conf等。这样以来,就不仅减少了root用户的登陆次数和管理时间,也提高了系统安全性。
一、sudo的特点
sudo扮演的角色注定了它要在安全方面格外谨慎,否则就会导致非法用户攫取root权限。同时,它还要兼顾易用性,让系统管理员能够更有效,更方便地使用它。sudo设计者的宗旨是:给用户尽可能少的权限但仍允许完成他们的工作。所以,sudo有以下特点:
1、sudo能够限制指定用户在指定主机上运行某些命令。
2、sudo可以提供日志,忠实地记录每个用户使用sudo做了些什么,并且能将日志传到中心主机或者日志服务器。
3、sudo为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。它默认的存放位置是/etc/sudoers。
4、sudo使用时间戳文件来完成类似“检票”的系统。当用户执行sudo并且输入密码后,用户获得了一张默认存活期为5分钟的“入场券”(默认值可以在编译的时候改变)。超时以后,用户必须重新输入密码。
二、sudo命令
1、sudo条目语法如下:
whowhich_hosts=(runas) TAG:command
hadoop ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel
注释:hadoop用户可以在任何地点以管理的身份执行命令useradd(无需密码)和usermod(需要密码)
2、关于别名(宏)
此外sudo还支持别名的定义,我们通过引用定义好的别名可以提供工作效率:
who User_Alias
which_hosts Host_Alias
runas Runas_Alias
command Cmnd_Alias
User_Alias | Host_Alias | Runas_Alias | Cmnd_Alias |
用户名 | 主机名 | 用户名 | 命令路径 |
组名(%) | IP地址 | 组名(%) | 目录 |
User别名 | 网络地址 | Runas别名 | Cmnd别名 |
host别名 |
3、使用visudo来编辑配置文件(/etc/sudoers)
虽然我们可以使用vim直接来编辑sudo的配置文件,但sudo提供了更加智能的编辑命令visudo,它能在编辑配置文件的同时帮我们检查语法错误,并在错误时提供快捷的返回功能,如图:
4、visudo常用选项
查看当前用户可以使用所有sudo类的命令可以使用 -l 选项,如图:
由于sudo默认密码刷新时间为5分钟,如果刚好用户输入密码执行命令之后因其他原因离开计算机,其他用户在5分钟之后执行相同的命令依然有效,如图:
为了防止这种情况的发生,可以使用 -k 选项,如图:
5、sudo的日志审计
为了能够明确的追究责任,sudo还提供了人性化的日志功能,在/var/log/secure日志文件中可以查看到,用于记录所有sudo类用户的所有动作,如图:
日志文件的安全性
三、基本实例用法
1、hadoop用户可以在任何地点以管理员的身份执行命令useradd(无需密码)和usermod(需要密码)。
使用visudo命令在配置文件末尾添加如下内容:
hadoop ALL=(root) NOPASSWD:/usr/sbin/useradd, PASSWD:/usr/sbin/userdel
切换至hadoop用户测试结果:
2、hadoop用户和组可以在任何地点以管理员的身份执行命令执行增、删、改、设置用户名密码,但不允许设置管理员的密码。
使用visudo命令在配置文件末尾添加如下内容:
User_Alias USERADMIN = hadoop, %hadoop Cmnd_Alias USERADMINCMND = /usr/sbin/useradd, /usr/sbin/usermod, /usr/sbin/userdel, /usr/bin/passwd [A-Za-z]*, ! /usr/bin/passwd root USERADMIN ALL=(root) NOPASSWD: USERADMINCMND
3、hadoop用户只能在192.168.1.120主机远程登录并以管理员身份执行ifconfig eth0命令。
使用visudo命令在配置文件末尾添加如下内容:
Cmnd_Alias NETCMND = /sbin/ifconfig eth0 hadoop 192.168.1.120 = (root) NOPASSWD:NETCMND
使用192.168.1.104测试,如图:
使用192.168.1.120测试,如图:
4、hadoop用户可以在任何地点以任何的身份执行所有命令,等同于root。
使用visudo命令在配置文件末尾添加如下内容:
hadoop ALL=(ALL) ALL
本文出自 “星矢” 博客,转载请与作者联系!